var $jscomp = $jscomp || {};
$jscomp.scope = {};
$jscomp.arrayIteratorImpl = function(array) {
  var index = 0;
  return function() {
    return index < array.length ? {done:!1, value:array[index++]} : {done:!0};
  };
};
$jscomp.arrayIterator = function(array) {
  return {next:$jscomp.arrayIteratorImpl(array)};
};
$jscomp.ASSUME_ES5 = !1;
$jscomp.ASSUME_NO_NATIVE_MAP = !1;
$jscomp.ASSUME_NO_NATIVE_SET = !1;
$jscomp.SIMPLE_FROUND_POLYFILL = !1;
$jscomp.ISOLATE_POLYFILLS = !1;
$jscomp.FORCE_POLYFILL_PROMISE = !1;
$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION = !1;
$jscomp.defineProperty = $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties ? Object.defineProperty : function(target, property, descriptor) {
  if (target == Array.prototype || target == Object.prototype) {
    return target;
  }
  target[property] = descriptor.value;
  return target;
};
$jscomp.getGlobal = function(passedInThis) {
  for (var possibleGlobals = ["object" == typeof globalThis && globalThis, passedInThis, "object" == typeof window && window, "object" == typeof self && self, "object" == typeof global && global], i = 0; i < possibleGlobals.length; ++i) {
    var maybeGlobal = possibleGlobals[i];
    if (maybeGlobal && maybeGlobal.Math == Math) {
      return maybeGlobal;
    }
  }
  return function() {
    throw Error("Cannot find global object");
  }();
};
$jscomp.global = $jscomp.getGlobal(this);
$jscomp.IS_SYMBOL_NATIVE = "function" === typeof Symbol && "symbol" === typeof Symbol("x");
$jscomp.TRUST_ES6_POLYFILLS = !$jscomp.ISOLATE_POLYFILLS || $jscomp.IS_SYMBOL_NATIVE;
$jscomp.polyfills = {};
$jscomp.propertyToPolyfillSymbol = {};
$jscomp.POLYFILL_PREFIX = "$jscp$";
var $jscomp$lookupPolyfilledValue = function(target, property, isOptionalAccess) {
  if (!isOptionalAccess || null != target) {
    var obfuscatedName = $jscomp.propertyToPolyfillSymbol[property];
    if (null == obfuscatedName) {
      return target[property];
    }
    var polyfill = target[obfuscatedName];
    return void 0 !== polyfill ? polyfill : target[property];
  }
};
$jscomp.polyfill = function(target, polyfill, fromLang, toLang) {
  polyfill && ($jscomp.ISOLATE_POLYFILLS ? $jscomp.polyfillIsolated(target, polyfill, fromLang, toLang) : $jscomp.polyfillUnisolated(target, polyfill, fromLang, toLang));
};
$jscomp.polyfillUnisolated = function(target, polyfill, fromLang, toLang) {
  for (var obj = $jscomp.global, split = target.split("."), i = 0; i < split.length - 1; i++) {
    var key = split[i];
    if (!(key in obj)) {
      return;
    }
    obj = obj[key];
  }
  var property = split[split.length - 1], orig = obj[property], impl = polyfill(orig);
  impl != orig && null != impl && $jscomp.defineProperty(obj, property, {configurable:!0, writable:!0, value:impl});
};
$jscomp.polyfillIsolated = function(target, polyfill, fromLang, toLang) {
  var split = target.split("."), isSimpleName = 1 === split.length, root = split[0];
  var ownerObject = !isSimpleName && root in $jscomp.polyfills ? $jscomp.polyfills : $jscomp.global;
  for (var i = 0; i < split.length - 1; i++) {
    var key = split[i];
    if (!(key in ownerObject)) {
      return;
    }
    ownerObject = ownerObject[key];
  }
  var property = split[split.length - 1], nativeImpl = $jscomp.IS_SYMBOL_NATIVE && "es6" === fromLang ? ownerObject[property] : null, impl = polyfill(nativeImpl);
  if (null != impl) {
    if (isSimpleName) {
      $jscomp.defineProperty($jscomp.polyfills, property, {configurable:!0, writable:!0, value:impl});
    } else if (impl !== nativeImpl) {
      if (void 0 === $jscomp.propertyToPolyfillSymbol[property]) {
        var BIN_ID = 1E9 * Math.random() >>> 0;
        $jscomp.propertyToPolyfillSymbol[property] = $jscomp.IS_SYMBOL_NATIVE ? $jscomp.global.Symbol(property) : $jscomp.POLYFILL_PREFIX + BIN_ID + "$" + property;
      }
      $jscomp.defineProperty(ownerObject, $jscomp.propertyToPolyfillSymbol[property], {configurable:!0, writable:!0, value:impl});
    }
  }
};
$jscomp.initSymbol = function() {
};
$jscomp.polyfill("Symbol", function(orig) {
  if (orig) {
    return orig;
  }
  var SymbolClass = function(id, opt_description) {
    this.$jscomp$symbol$id_ = id;
    $jscomp.defineProperty(this, "description", {configurable:!0, writable:!0, value:opt_description});
  };
  SymbolClass.prototype.toString = function() {
    return this.$jscomp$symbol$id_;
  };
  var SYMBOL_PREFIX = "jscomp_symbol_" + (1E9 * Math.random() >>> 0) + "_", counter = 0, symbolPolyfill = function(opt_description) {
    if (this instanceof symbolPolyfill) {
      throw new TypeError("Symbol is not a constructor");
    }
    return new SymbolClass(SYMBOL_PREFIX + (opt_description || "") + "_" + counter++, opt_description);
  };
  return symbolPolyfill;
}, "es6", "es3");
$jscomp.polyfill("Symbol.iterator", function(orig) {
  if (orig) {
    return orig;
  }
  for (var symbolIterator = Symbol("Symbol.iterator"), arrayLikes = "Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "), i = 0; i < arrayLikes.length; i++) {
    var ArrayLikeCtor = $jscomp.global[arrayLikes[i]];
    "function" === typeof ArrayLikeCtor && "function" != typeof ArrayLikeCtor.prototype[symbolIterator] && $jscomp.defineProperty(ArrayLikeCtor.prototype, symbolIterator, {configurable:!0, writable:!0, value:function() {
      return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this));
    }});
  }
  return symbolIterator;
}, "es6", "es3");
$jscomp.iteratorPrototype = function(next) {
  var iterator = {next:next};
  iterator[Symbol.iterator] = function() {
    return this;
  };
  return iterator;
};
$jscomp.createTemplateTagFirstArg = function(arrayStrings) {
  return arrayStrings.raw = arrayStrings;
};
$jscomp.createTemplateTagFirstArgWithRaw = function(arrayStrings, rawArrayStrings) {
  arrayStrings.raw = rawArrayStrings;
  return arrayStrings;
};
$jscomp.makeIterator = function(iterable) {
  var iteratorFunction = "undefined" != typeof Symbol && Symbol.iterator && iterable[Symbol.iterator];
  if (iteratorFunction) {
    return iteratorFunction.call(iterable);
  }
  if ("number" == typeof iterable.length) {
    return $jscomp.arrayIterator(iterable);
  }
  throw Error(String(iterable) + " is not an iterable or ArrayLike");
};
$jscomp.arrayFromIterator = function(iterator) {
  for (var i, arr = []; !(i = iterator.next()).done;) {
    arr.push(i.value);
  }
  return arr;
};
$jscomp.arrayFromIterable = function(iterable) {
  return iterable instanceof Array ? iterable : $jscomp.arrayFromIterator($jscomp.makeIterator(iterable));
};
$jscomp.owns = function(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
};
$jscomp.assign = $jscomp.TRUST_ES6_POLYFILLS && "function" == typeof Object.assign ? Object.assign : function(target, var_args) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i];
    if (source) {
      for (var key in source) {
        $jscomp.owns(source, key) && (target[key] = source[key]);
      }
    }
  }
  return target;
};
$jscomp.polyfill("Object.assign", function(orig) {
  return orig || $jscomp.assign;
}, "es6", "es3");
$jscomp.objectCreate = $jscomp.ASSUME_ES5 || "function" == typeof Object.create ? Object.create : function(prototype) {
  var ctor = function() {
  };
  ctor.prototype = prototype;
  return new ctor();
};
$jscomp.getConstructImplementation = function() {
  function reflectConstructWorks() {
    function Base() {
    }
    new Base();
    Reflect.construct(Base, [], function() {
    });
    return new Base() instanceof Base;
  }
  if ($jscomp.TRUST_ES6_POLYFILLS && "undefined" != typeof Reflect && Reflect.construct) {
    if (reflectConstructWorks()) {
      return Reflect.construct;
    }
    var brokenConstruct = Reflect.construct;
    return function(target, argList, opt_newTarget) {
      var out = brokenConstruct(target, argList);
      opt_newTarget && Reflect.setPrototypeOf(out, opt_newTarget.prototype);
      return out;
    };
  }
  return function(target, argList, opt_newTarget) {
    void 0 === opt_newTarget && (opt_newTarget = target);
    var obj = $jscomp.objectCreate(opt_newTarget.prototype || Object.prototype);
    return Function.prototype.apply.call(target, obj, argList) || obj;
  };
};
$jscomp.construct = {valueOf:$jscomp.getConstructImplementation}.valueOf();
$jscomp.underscoreProtoCanBeSet = function() {
  var x = {a:!0}, y = {};
  try {
    return y.__proto__ = x, y.a;
  } catch (e) {
  }
  return !1;
};
$jscomp.setPrototypeOf = $jscomp.TRUST_ES6_POLYFILLS && "function" == typeof Object.setPrototypeOf ? Object.setPrototypeOf : $jscomp.underscoreProtoCanBeSet() ? function(target, proto) {
  target.__proto__ = proto;
  if (target.__proto__ !== proto) {
    throw new TypeError(target + " is not extensible");
  }
  return target;
} : null;
$jscomp.inherits = function(childCtor, parentCtor) {
  childCtor.prototype = $jscomp.objectCreate(parentCtor.prototype);
  childCtor.prototype.constructor = childCtor;
  if ($jscomp.setPrototypeOf) {
    var setPrototypeOf = $jscomp.setPrototypeOf;
    setPrototypeOf(childCtor, parentCtor);
  } else {
    for (var p in parentCtor) {
      if ("prototype" != p) {
        if (Object.defineProperties) {
          var descriptor = Object.getOwnPropertyDescriptor(parentCtor, p);
          descriptor && Object.defineProperty(childCtor, p, descriptor);
        } else {
          childCtor[p] = parentCtor[p];
        }
      }
    }
  }
  childCtor.superClass_ = parentCtor.prototype;
};
$jscomp.generator = {};
$jscomp.generator.ensureIteratorResultIsObject_ = function(result) {
  if (!(result instanceof Object)) {
    throw new TypeError("Iterator result " + result + " is not an object");
  }
};
$jscomp.generator.Context = function() {
  this.isRunning_ = !1;
  this.yieldAllIterator_ = null;
  this.yieldResult = void 0;
  this.nextAddress = 1;
  this.finallyAddress_ = this.catchAddress_ = 0;
  this.finallyContexts_ = this.abruptCompletion_ = null;
};
$jscomp.generator.Context.prototype.start_ = function() {
  if (this.isRunning_) {
    throw new TypeError("Generator is already running");
  }
  this.isRunning_ = !0;
};
$jscomp.generator.Context.prototype.stop_ = function() {
  this.isRunning_ = !1;
};
$jscomp.generator.Context.prototype.jumpToErrorHandler_ = function() {
  this.nextAddress = this.catchAddress_ || this.finallyAddress_;
};
$jscomp.generator.Context.prototype.next_ = function(value) {
  this.yieldResult = value;
};
$jscomp.generator.Context.prototype.throw_ = function(e) {
  this.abruptCompletion_ = {exception:e, isException:!0};
  this.jumpToErrorHandler_();
};
$jscomp.generator.Context.prototype.return = function(value) {
  this.abruptCompletion_ = {return:value};
  this.nextAddress = this.finallyAddress_;
};
$jscomp.generator.Context.prototype.jumpThroughFinallyBlocks = function(nextAddress) {
  this.abruptCompletion_ = {jumpTo:nextAddress};
  this.nextAddress = this.finallyAddress_;
};
$jscomp.generator.Context.prototype.yield = function(value, resumeAddress) {
  this.nextAddress = resumeAddress;
  return {value:value};
};
$jscomp.generator.Context.prototype.yieldAll = function(iterable, resumeAddress) {
  var iterator = $jscomp.makeIterator(iterable), result = iterator.next();
  $jscomp.generator.ensureIteratorResultIsObject_(result);
  if (result.done) {
    this.yieldResult = result.value, this.nextAddress = resumeAddress;
  } else {
    return this.yieldAllIterator_ = iterator, this.yield(result.value, resumeAddress);
  }
};
$jscomp.generator.Context.prototype.jumpTo = function(nextAddress) {
  this.nextAddress = nextAddress;
};
$jscomp.generator.Context.prototype.jumpToEnd = function() {
  this.nextAddress = 0;
};
$jscomp.generator.Context.prototype.setCatchFinallyBlocks = function(catchAddress, finallyAddress) {
  this.catchAddress_ = catchAddress;
  void 0 != finallyAddress && (this.finallyAddress_ = finallyAddress);
};
$jscomp.generator.Context.prototype.setFinallyBlock = function(finallyAddress) {
  this.catchAddress_ = 0;
  this.finallyAddress_ = finallyAddress || 0;
};
$jscomp.generator.Context.prototype.leaveTryBlock = function(nextAddress, catchAddress) {
  this.nextAddress = nextAddress;
  this.catchAddress_ = catchAddress || 0;
};
$jscomp.generator.Context.prototype.enterCatchBlock = function(nextCatchBlockAddress) {
  this.catchAddress_ = nextCatchBlockAddress || 0;
  var exception = this.abruptCompletion_.exception;
  this.abruptCompletion_ = null;
  return exception;
};
$jscomp.generator.Context.prototype.enterFinallyBlock = function(nextCatchAddress, nextFinallyAddress, finallyDepth) {
  finallyDepth ? this.finallyContexts_[finallyDepth] = this.abruptCompletion_ : this.finallyContexts_ = [this.abruptCompletion_];
  this.catchAddress_ = nextCatchAddress || 0;
  this.finallyAddress_ = nextFinallyAddress || 0;
};
$jscomp.generator.Context.prototype.leaveFinallyBlock = function(nextAddress, finallyDepth) {
  var preservedContext = this.finallyContexts_.splice(finallyDepth || 0)[0], abruptCompletion = this.abruptCompletion_ = this.abruptCompletion_ || preservedContext;
  if (abruptCompletion) {
    if (abruptCompletion.isException) {
      return this.jumpToErrorHandler_();
    }
    void 0 != abruptCompletion.jumpTo && this.finallyAddress_ < abruptCompletion.jumpTo ? (this.nextAddress = abruptCompletion.jumpTo, this.abruptCompletion_ = null) : this.nextAddress = this.finallyAddress_;
  } else {
    this.nextAddress = nextAddress;
  }
};
$jscomp.generator.Context.prototype.forIn = function(object) {
  return new $jscomp.generator.Context.PropertyIterator(object);
};
$jscomp.generator.Context.PropertyIterator = function(object) {
  this.object_ = object;
  this.properties_ = [];
  for (var property in object) {
    this.properties_.push(property);
  }
  this.properties_.reverse();
};
$jscomp.generator.Context.PropertyIterator.prototype.getNext = function() {
  for (; 0 < this.properties_.length;) {
    var property = this.properties_.pop();
    if (property in this.object_) {
      return property;
    }
  }
  return null;
};
$jscomp.generator.Engine_ = function(program) {
  this.context_ = new $jscomp.generator.Context();
  this.program_ = program;
};
$jscomp.generator.Engine_.prototype.next_ = function(value) {
  this.context_.start_();
  if (this.context_.yieldAllIterator_) {
    return this.yieldAllStep_(this.context_.yieldAllIterator_.next, value, this.context_.next_);
  }
  this.context_.next_(value);
  return this.nextStep_();
};
$jscomp.generator.Engine_.prototype.return_ = function(value) {
  this.context_.start_();
  var yieldAllIterator = this.context_.yieldAllIterator_;
  if (yieldAllIterator) {
    return this.yieldAllStep_("return" in yieldAllIterator ? yieldAllIterator["return"] : function(v) {
      return {value:v, done:!0};
    }, value, this.context_.return);
  }
  this.context_.return(value);
  return this.nextStep_();
};
$jscomp.generator.Engine_.prototype.throw_ = function(exception) {
  this.context_.start_();
  if (this.context_.yieldAllIterator_) {
    return this.yieldAllStep_(this.context_.yieldAllIterator_["throw"], exception, this.context_.next_);
  }
  this.context_.throw_(exception);
  return this.nextStep_();
};
$jscomp.generator.Engine_.prototype.yieldAllStep_ = function(action, value, nextAction) {
  try {
    var result = action.call(this.context_.yieldAllIterator_, value);
    $jscomp.generator.ensureIteratorResultIsObject_(result);
    if (!result.done) {
      return this.context_.stop_(), result;
    }
    var resultValue = result.value;
  } catch (e) {
    return this.context_.yieldAllIterator_ = null, this.context_.throw_(e), this.nextStep_();
  }
  this.context_.yieldAllIterator_ = null;
  nextAction.call(this.context_, resultValue);
  return this.nextStep_();
};
$jscomp.generator.Engine_.prototype.nextStep_ = function() {
  for (; this.context_.nextAddress;) {
    try {
      var yieldValue = this.program_(this.context_);
      if (yieldValue) {
        return this.context_.stop_(), {value:yieldValue.value, done:!1};
      }
    } catch (e) {
      this.context_.yieldResult = void 0, this.context_.throw_(e);
    }
  }
  this.context_.stop_();
  if (this.context_.abruptCompletion_) {
    var abruptCompletion = this.context_.abruptCompletion_;
    this.context_.abruptCompletion_ = null;
    if (abruptCompletion.isException) {
      throw abruptCompletion.exception;
    }
    return {value:abruptCompletion.return, done:!0};
  }
  return {value:void 0, done:!0};
};
$jscomp.generator.Generator_ = function(engine) {
  this.next = function(opt_value) {
    return engine.next_(opt_value);
  };
  this.throw = function(exception) {
    return engine.throw_(exception);
  };
  this.return = function(value) {
    return engine.return_(value);
  };
  this[Symbol.iterator] = function() {
    return this;
  };
};
$jscomp.generator.createGenerator = function(generator, program) {
  var result = new $jscomp.generator.Generator_(new $jscomp.generator.Engine_(program));
  $jscomp.setPrototypeOf && generator.prototype && $jscomp.setPrototypeOf(result, generator.prototype);
  return result;
};
$jscomp.asyncExecutePromiseGenerator = function(generator) {
  function passValueToGenerator(value) {
    return generator.next(value);
  }
  function passErrorToGenerator(error) {
    return generator.throw(error);
  }
  return new Promise(function(resolve, reject) {
    function handleGeneratorRecord(genRec) {
      genRec.done ? resolve(genRec.value) : Promise.resolve(genRec.value).then(passValueToGenerator, passErrorToGenerator).then(handleGeneratorRecord, reject);
    }
    handleGeneratorRecord(generator.next());
  });
};
$jscomp.asyncExecutePromiseGeneratorFunction = function(generatorFunction) {
  return $jscomp.asyncExecutePromiseGenerator(generatorFunction());
};
$jscomp.asyncExecutePromiseGeneratorProgram = function(program) {
  return $jscomp.asyncExecutePromiseGenerator(new $jscomp.generator.Generator_(new $jscomp.generator.Engine_(program)));
};
$jscomp.getRestArguments = function() {
  for (var startIndex = Number(this), restArgs = [], i = startIndex; i < arguments.length; i++) {
    restArgs[i - startIndex] = arguments[i];
  }
  return restArgs;
};
$jscomp.polyfill("Reflect", function(orig) {
  return orig ? orig : {};
}, "es6", "es3");
$jscomp.polyfill("Reflect.construct", function(orig) {
  return $jscomp.construct;
}, "es6", "es3");
$jscomp.polyfill("Reflect.setPrototypeOf", function(orig) {
  if (orig) {
    return orig;
  }
  if ($jscomp.setPrototypeOf) {
    var setPrototypeOf = $jscomp.setPrototypeOf;
    return function(target, proto) {
      try {
        return setPrototypeOf(target, proto), !0;
      } catch (e) {
        return !1;
      }
    };
  }
  return null;
}, "es6", "es5");
$jscomp.polyfill("Promise", function(NativePromise) {
  function platformSupportsPromiseRejectionEvents() {
    return "undefined" !== typeof $jscomp.global.PromiseRejectionEvent;
  }
  function globalPromiseIsNative() {
    return $jscomp.global.Promise && -1 !== $jscomp.global.Promise.toString().indexOf("[native code]");
  }
  function shouldForcePolyfillPromise() {
    return ($jscomp.FORCE_POLYFILL_PROMISE || $jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION && !platformSupportsPromiseRejectionEvents()) && globalPromiseIsNative();
  }
  function AsyncExecutor() {
    this.batch_ = null;
  }
  function isObject(value) {
    switch(typeof value) {
      case "object":
        return null != value;
      case "function":
        return !0;
      default:
        return !1;
    }
  }
  function resolvingPromise(opt_value) {
    return opt_value instanceof PolyfillPromise ? opt_value : new PolyfillPromise(function(resolve, reject) {
      resolve(opt_value);
    });
  }
  if (NativePromise && !shouldForcePolyfillPromise()) {
    return NativePromise;
  }
  AsyncExecutor.prototype.asyncExecute = function(f) {
    if (null == this.batch_) {
      this.batch_ = [];
      var self = this;
      this.asyncExecuteFunction(function() {
        self.executeBatch_();
      });
    }
    this.batch_.push(f);
  };
  var nativeSetTimeout = $jscomp.global.setTimeout;
  AsyncExecutor.prototype.asyncExecuteFunction = function(f) {
    nativeSetTimeout(f, 0);
  };
  AsyncExecutor.prototype.executeBatch_ = function() {
    for (; this.batch_ && this.batch_.length;) {
      var executingBatch = this.batch_;
      this.batch_ = [];
      for (var i = 0; i < executingBatch.length; ++i) {
        var f = executingBatch[i];
        executingBatch[i] = null;
        try {
          f();
        } catch (error) {
          this.asyncThrow_(error);
        }
      }
    }
    this.batch_ = null;
  };
  AsyncExecutor.prototype.asyncThrow_ = function(exception) {
    this.asyncExecuteFunction(function() {
      throw exception;
    });
  };
  var PromiseState = {PENDING:0, FULFILLED:1, REJECTED:2}, PolyfillPromise = function(executor) {
    this.state_ = PromiseState.PENDING;
    this.result_ = void 0;
    this.onSettledCallbacks_ = [];
    this.isRejectionHandled_ = !1;
    var resolveAndReject = this.createResolveAndReject_();
    try {
      executor(resolveAndReject.resolve, resolveAndReject.reject);
    } catch (e) {
      resolveAndReject.reject(e);
    }
  };
  PolyfillPromise.prototype.createResolveAndReject_ = function() {
    function firstCallWins(method) {
      return function(x) {
        alreadyCalled || (alreadyCalled = !0, method.call(thisPromise, x));
      };
    }
    var thisPromise = this, alreadyCalled = !1;
    return {resolve:firstCallWins(this.resolveTo_), reject:firstCallWins(this.reject_)};
  };
  PolyfillPromise.prototype.resolveTo_ = function(value) {
    value === this ? this.reject_(new TypeError("A Promise cannot resolve to itself")) : value instanceof PolyfillPromise ? this.settleSameAsPromise_(value) : isObject(value) ? this.resolveToNonPromiseObj_(value) : this.fulfill_(value);
  };
  PolyfillPromise.prototype.resolveToNonPromiseObj_ = function(obj) {
    var thenMethod = void 0;
    try {
      thenMethod = obj.then;
    } catch (error) {
      this.reject_(error);
      return;
    }
    "function" == typeof thenMethod ? this.settleSameAsThenable_(thenMethod, obj) : this.fulfill_(obj);
  };
  PolyfillPromise.prototype.reject_ = function(reason) {
    this.settle_(PromiseState.REJECTED, reason);
  };
  PolyfillPromise.prototype.fulfill_ = function(value) {
    this.settle_(PromiseState.FULFILLED, value);
  };
  PolyfillPromise.prototype.settle_ = function(settledState, valueOrReason) {
    if (this.state_ != PromiseState.PENDING) {
      throw Error("Cannot settle(" + settledState + ", " + valueOrReason + "): Promise already settled in state" + this.state_);
    }
    this.state_ = settledState;
    this.result_ = valueOrReason;
    this.state_ === PromiseState.REJECTED && this.scheduleUnhandledRejectionCheck_();
    this.executeOnSettledCallbacks_();
  };
  PolyfillPromise.prototype.scheduleUnhandledRejectionCheck_ = function() {
    var self = this;
    nativeSetTimeout(function() {
      if (self.notifyUnhandledRejection_()) {
        var nativeConsole = $jscomp.global.console;
        "undefined" !== typeof nativeConsole && nativeConsole.error(self.result_);
      }
    }, 1);
  };
  PolyfillPromise.prototype.notifyUnhandledRejection_ = function() {
    if (this.isRejectionHandled_) {
      return !1;
    }
    var NativeCustomEvent = $jscomp.global.CustomEvent, NativeEvent = $jscomp.global.Event, nativeDispatchEvent = $jscomp.global.dispatchEvent;
    if ("undefined" === typeof nativeDispatchEvent) {
      return !0;
    }
    if ("function" === typeof NativeCustomEvent) {
      var event = new NativeCustomEvent("unhandledrejection", {cancelable:!0});
    } else {
      "function" === typeof NativeEvent ? event = new NativeEvent("unhandledrejection", {cancelable:!0}) : (event = $jscomp.global.document.createEvent("CustomEvent"), event.initCustomEvent("unhandledrejection", !1, !0, event));
    }
    event.promise = this;
    event.reason = this.result_;
    return nativeDispatchEvent(event);
  };
  PolyfillPromise.prototype.executeOnSettledCallbacks_ = function() {
    if (null != this.onSettledCallbacks_) {
      for (var i = 0; i < this.onSettledCallbacks_.length; ++i) {
        asyncExecutor.asyncExecute(this.onSettledCallbacks_[i]);
      }
      this.onSettledCallbacks_ = null;
    }
  };
  var asyncExecutor = new AsyncExecutor();
  PolyfillPromise.prototype.settleSameAsPromise_ = function(promise) {
    var methods = this.createResolveAndReject_();
    promise.callWhenSettled_(methods.resolve, methods.reject);
  };
  PolyfillPromise.prototype.settleSameAsThenable_ = function(thenMethod, thenable) {
    var methods = this.createResolveAndReject_();
    try {
      thenMethod.call(thenable, methods.resolve, methods.reject);
    } catch (error) {
      methods.reject(error);
    }
  };
  PolyfillPromise.prototype.then = function(onFulfilled, onRejected) {
    function createCallback(paramF, defaultF) {
      return "function" == typeof paramF ? function(x) {
        try {
          resolveChild(paramF(x));
        } catch (error) {
          rejectChild(error);
        }
      } : defaultF;
    }
    var resolveChild, rejectChild, childPromise = new PolyfillPromise(function(resolve, reject) {
      resolveChild = resolve;
      rejectChild = reject;
    });
    this.callWhenSettled_(createCallback(onFulfilled, resolveChild), createCallback(onRejected, rejectChild));
    return childPromise;
  };
  PolyfillPromise.prototype.catch = function(onRejected) {
    return this.then(void 0, onRejected);
  };
  PolyfillPromise.prototype.callWhenSettled_ = function(onFulfilled, onRejected) {
    function callback() {
      switch(thisPromise.state_) {
        case PromiseState.FULFILLED:
          onFulfilled(thisPromise.result_);
          break;
        case PromiseState.REJECTED:
          onRejected(thisPromise.result_);
          break;
        default:
          throw Error("Unexpected state: " + thisPromise.state_);
      }
    }
    var thisPromise = this;
    null == this.onSettledCallbacks_ ? asyncExecutor.asyncExecute(callback) : this.onSettledCallbacks_.push(callback);
    this.isRejectionHandled_ = !0;
  };
  PolyfillPromise.resolve = resolvingPromise;
  PolyfillPromise.reject = function(opt_reason) {
    return new PolyfillPromise(function(resolve, reject) {
      reject(opt_reason);
    });
  };
  PolyfillPromise.race = function(thenablesOrValues) {
    return new PolyfillPromise(function(resolve, reject) {
      for (var iterator = $jscomp.makeIterator(thenablesOrValues), iterRec = iterator.next(); !iterRec.done; iterRec = iterator.next()) {
        resolvingPromise(iterRec.value).callWhenSettled_(resolve, reject);
      }
    });
  };
  PolyfillPromise.all = function(thenablesOrValues) {
    var iterator = $jscomp.makeIterator(thenablesOrValues), iterRec = iterator.next();
    return iterRec.done ? resolvingPromise([]) : new PolyfillPromise(function(resolveAll, rejectAll) {
      function onFulfilled(i) {
        return function(ithResult) {
          resultsArray[i] = ithResult;
          unresolvedCount--;
          0 == unresolvedCount && resolveAll(resultsArray);
        };
      }
      var resultsArray = [], unresolvedCount = 0;
      do {
        resultsArray.push(void 0), unresolvedCount++, resolvingPromise(iterRec.value).callWhenSettled_(onFulfilled(resultsArray.length - 1), rejectAll), iterRec = iterator.next();
      } while (!iterRec.done);
    });
  };
  return PolyfillPromise;
}, "es6", "es3");
$jscomp.polyfill("Object.setPrototypeOf", function(orig) {
  return orig || $jscomp.setPrototypeOf;
}, "es6", "es5");
$jscomp.iteratorFromArray = function(array, transform) {
  array instanceof String && (array += "");
  var i = 0, done = !1, iter = {next:function() {
    if (!done && i < array.length) {
      var index = i++;
      return {value:transform(index, array[index]), done:!1};
    }
    done = !0;
    return {done:!0, value:void 0};
  }};
  iter[Symbol.iterator] = function() {
    return iter;
  };
  return iter;
};
$jscomp.polyfill("Array.prototype.keys", function(orig) {
  return orig ? orig : function() {
    return $jscomp.iteratorFromArray(this, function(i) {
      return i;
    });
  };
}, "es6", "es3");
$jscomp.checkEs6ConformanceViaProxy = function() {
  try {
    var proxied = {}, proxy = Object.create(new $jscomp.global.Proxy(proxied, {get:function(target, key, receiver) {
      return target == proxied && "q" == key && receiver == proxy;
    }}));
    return !0 === proxy.q;
  } catch (err) {
    return !1;
  }
};
$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS = !1;
$jscomp.ES6_CONFORMANCE = $jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS && $jscomp.checkEs6ConformanceViaProxy();
$jscomp.polyfill("WeakMap", function(NativeWeakMap) {
  function isConformant() {
    if (!NativeWeakMap || !Object.seal) {
      return !1;
    }
    try {
      var x = Object.seal({}), y = Object.seal({}), map = new NativeWeakMap([[x, 2], [y, 3]]);
      if (2 != map.get(x) || 3 != map.get(y)) {
        return !1;
      }
      map.delete(x);
      map.set(y, 4);
      return !map.has(x) && 4 == map.get(y);
    } catch (err) {
      return !1;
    }
  }
  function WeakMapMembership() {
  }
  function isValidKey(key) {
    var type = typeof key;
    return "object" === type && null !== key || "function" === type;
  }
  function insert(target) {
    if (!$jscomp.owns(target, prop)) {
      var obj = new WeakMapMembership();
      $jscomp.defineProperty(target, prop, {value:obj});
    }
  }
  function patch(name) {
    if (!$jscomp.ISOLATE_POLYFILLS) {
      var prev = Object[name];
      prev && (Object[name] = function(target) {
        if (target instanceof WeakMapMembership) {
          return target;
        }
        Object.isExtensible(target) && insert(target);
        return prev(target);
      });
    }
  }
  if ($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS) {
    if (NativeWeakMap && $jscomp.ES6_CONFORMANCE) {
      return NativeWeakMap;
    }
  } else {
    if (isConformant()) {
      return NativeWeakMap;
    }
  }
  var prop = "$jscomp_hidden_" + Math.random();
  patch("freeze");
  patch("preventExtensions");
  patch("seal");
  var index = 0, PolyfillWeakMap = function(opt_iterable) {
    this.id_ = (index += Math.random() + 1).toString();
    if (opt_iterable) {
      for (var iter = $jscomp.makeIterator(opt_iterable), entry; !(entry = iter.next()).done;) {
        var item = entry.value;
        this.set(item[0], item[1]);
      }
    }
  };
  PolyfillWeakMap.prototype.set = function(key, value) {
    if (!isValidKey(key)) {
      throw Error("Invalid WeakMap key");
    }
    insert(key);
    if (!$jscomp.owns(key, prop)) {
      throw Error("WeakMap key fail: " + key);
    }
    key[prop][this.id_] = value;
    return this;
  };
  PolyfillWeakMap.prototype.get = function(key) {
    return isValidKey(key) && $jscomp.owns(key, prop) ? key[prop][this.id_] : void 0;
  };
  PolyfillWeakMap.prototype.has = function(key) {
    return isValidKey(key) && $jscomp.owns(key, prop) && $jscomp.owns(key[prop], this.id_);
  };
  PolyfillWeakMap.prototype.delete = function(key) {
    return isValidKey(key) && $jscomp.owns(key, prop) && $jscomp.owns(key[prop], this.id_) ? delete key[prop][this.id_] : !1;
  };
  return PolyfillWeakMap;
}, "es6", "es3");
$jscomp.MapEntry = function() {
};
$jscomp.polyfill("Map", function(NativeMap) {
  function isConformant() {
    if ($jscomp.ASSUME_NO_NATIVE_MAP || !NativeMap || "function" != typeof NativeMap || !NativeMap.prototype.entries || "function" != typeof Object.seal) {
      return !1;
    }
    try {
      var key = Object.seal({x:4}), map = new NativeMap($jscomp.makeIterator([[key, "s"]]));
      if ("s" != map.get(key) || 1 != map.size || map.get({x:4}) || map.set({x:4}, "t") != map || 2 != map.size) {
        return !1;
      }
      var iter = map.entries(), item = iter.next();
      if (item.done || item.value[0] != key || "s" != item.value[1]) {
        return !1;
      }
      item = iter.next();
      return item.done || 4 != item.value[0].x || "t" != item.value[1] || !iter.next().done ? !1 : !0;
    } catch (err) {
      return !1;
    }
  }
  if ($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS) {
    if (NativeMap && $jscomp.ES6_CONFORMANCE) {
      return NativeMap;
    }
  } else {
    if (isConformant()) {
      return NativeMap;
    }
  }
  var idMap = new WeakMap(), PolyfillMap = function(opt_iterable) {
    this[0] = {};
    this[1] = createHead();
    this.size = 0;
    if (opt_iterable) {
      for (var iter = $jscomp.makeIterator(opt_iterable), entry; !(entry = iter.next()).done;) {
        var item = entry.value;
        this.set(item[0], item[1]);
      }
    }
  };
  PolyfillMap.prototype.set = function(key, value) {
    key = 0 === key ? 0 : key;
    var r = maybeGetEntry(this, key);
    r.list || (r.list = this[0][r.id] = []);
    r.entry ? r.entry.value = value : (r.entry = {next:this[1], previous:this[1].previous, head:this[1], key:key, value:value}, r.list.push(r.entry), this[1].previous.next = r.entry, this[1].previous = r.entry, this.size++);
    return this;
  };
  PolyfillMap.prototype.delete = function(key) {
    var r = maybeGetEntry(this, key);
    return r.entry && r.list ? (r.list.splice(r.index, 1), r.list.length || delete this[0][r.id], r.entry.previous.next = r.entry.next, r.entry.next.previous = r.entry.previous, r.entry.head = null, this.size--, !0) : !1;
  };
  PolyfillMap.prototype.clear = function() {
    this[0] = {};
    this[1] = this[1].previous = createHead();
    this.size = 0;
  };
  PolyfillMap.prototype.has = function(key) {
    return !!maybeGetEntry(this, key).entry;
  };
  PolyfillMap.prototype.get = function(key) {
    var entry = maybeGetEntry(this, key).entry;
    return entry && entry.value;
  };
  PolyfillMap.prototype.entries = function() {
    return makeIterator(this, function(entry) {
      return [entry.key, entry.value];
    });
  };
  PolyfillMap.prototype.keys = function() {
    return makeIterator(this, function(entry) {
      return entry.key;
    });
  };
  PolyfillMap.prototype.values = function() {
    return makeIterator(this, function(entry) {
      return entry.value;
    });
  };
  PolyfillMap.prototype.forEach = function(callback, opt_thisArg) {
    for (var iter = this.entries(), item; !(item = iter.next()).done;) {
      var entry = item.value;
      callback.call(opt_thisArg, entry[1], entry[0], this);
    }
  };
  PolyfillMap.prototype[Symbol.iterator] = PolyfillMap.prototype.entries;
  var maybeGetEntry = function(map, key) {
    var id = getId(key), list = map[0][id];
    if (list && $jscomp.owns(map[0], id)) {
      for (var index = 0; index < list.length; index++) {
        var entry = list[index];
        if (key !== key && entry.key !== entry.key || key === entry.key) {
          return {id:id, list:list, index:index, entry:entry};
        }
      }
    }
    return {id:id, list:list, index:-1, entry:void 0};
  }, makeIterator = function(map, func) {
    var entry = map[1];
    return $jscomp.iteratorPrototype(function() {
      if (entry) {
        for (; entry.head != map[1];) {
          entry = entry.previous;
        }
        for (; entry.next != entry.head;) {
          return entry = entry.next, {done:!1, value:func(entry)};
        }
        entry = null;
      }
      return {done:!0, value:void 0};
    });
  }, createHead = function() {
    var head = {};
    return head.previous = head.next = head.head = head;
  }, mapIndex = 0, getId = function(obj) {
    var type = obj && typeof obj;
    if ("object" == type || "function" == type) {
      if (!idMap.has(obj)) {
        var id = "" + ++mapIndex;
        idMap.set(obj, id);
        return id;
      }
      return idMap.get(obj);
    }
    return "p_" + obj;
  };
  return PolyfillMap;
}, "es6", "es3");
$jscomp.checkStringArgs = function(thisArg, arg, func) {
  if (null == thisArg) {
    throw new TypeError("The 'this' value for String.prototype." + func + " must not be null or undefined");
  }
  if (arg instanceof RegExp) {
    throw new TypeError("First argument to String.prototype." + func + " must not be a regular expression");
  }
  return thisArg + "";
};
$jscomp.polyfill("String.prototype.endsWith", function(orig) {
  return orig ? orig : function(searchString, opt_position) {
    var string = $jscomp.checkStringArgs(this, searchString, "endsWith");
    searchString += "";
    void 0 === opt_position && (opt_position = string.length);
    for (var i = Math.max(0, Math.min(opt_position | 0, string.length)), j = searchString.length; 0 < j && 0 < i;) {
      if (string[--i] != searchString[--j]) {
        return !1;
      }
    }
    return 0 >= j;
  };
}, "es6", "es3");
$jscomp.polyfill("Array.prototype.entries", function(orig) {
  return orig ? orig : function() {
    return $jscomp.iteratorFromArray(this, function(i, v) {
      return [i, v];
    });
  };
}, "es6", "es3");
$jscomp.polyfill("String.prototype.startsWith", function(orig) {
  return orig ? orig : function(searchString, opt_position) {
    var string = $jscomp.checkStringArgs(this, searchString, "startsWith");
    searchString += "";
    for (var strLen = string.length, searchLen = searchString.length, i = Math.max(0, Math.min(opt_position | 0, string.length)), j = 0; j < searchLen && i < strLen;) {
      if (string[i++] != searchString[j++]) {
        return !1;
      }
    }
    return j >= searchLen;
  };
}, "es6", "es3");
$jscomp.polyfill("Number.isFinite", function(orig) {
  return orig ? orig : function(x) {
    return "number" !== typeof x ? !1 : !isNaN(x) && Infinity !== x && -Infinity !== x;
  };
}, "es6", "es3");
$jscomp.polyfill("String.prototype.repeat", function(orig) {
  return orig ? orig : function(copies) {
    var string = $jscomp.checkStringArgs(this, null, "repeat");
    if (0 > copies || 1342177279 < copies) {
      throw new RangeError("Invalid count value");
    }
    copies |= 0;
    for (var result = ""; copies;) {
      if (copies & 1 && (result += string), copies >>>= 1) {
        string += string;
      }
    }
    return result;
  };
}, "es6", "es3");
$jscomp.polyfill("Array.prototype.values", function(orig) {
  return orig ? orig : function() {
    return $jscomp.iteratorFromArray(this, function(k, v) {
      return v;
    });
  };
}, "es8", "es3");
$jscomp.polyfill("Array.from", function(orig) {
  return orig ? orig : function(arrayLike, opt_mapFn, opt_thisArg) {
    opt_mapFn = null != opt_mapFn ? opt_mapFn : function(x) {
      return x;
    };
    var result = [], iteratorFunction = "undefined" != typeof Symbol && Symbol.iterator && arrayLike[Symbol.iterator];
    if ("function" == typeof iteratorFunction) {
      arrayLike = iteratorFunction.call(arrayLike);
      for (var next, k = 0; !(next = arrayLike.next()).done;) {
        result.push(opt_mapFn.call(opt_thisArg, next.value, k++));
      }
    } else {
      for (var len = arrayLike.length, i = 0; i < len; i++) {
        result.push(opt_mapFn.call(opt_thisArg, arrayLike[i], i));
      }
    }
    return result;
  };
}, "es6", "es3");
$jscomp.polyfill("Object.entries", function(orig) {
  return orig ? orig : function(obj) {
    var result = [], key;
    for (key in obj) {
      $jscomp.owns(obj, key) && result.push([key, obj[key]]);
    }
    return result;
  };
}, "es8", "es3");
$jscomp.polyfill("Object.is", function(orig) {
  return orig ? orig : function(left, right) {
    return left === right ? 0 !== left || 1 / left === 1 / right : left !== left && right !== right;
  };
}, "es6", "es3");
$jscomp.polyfill("Array.prototype.includes", function(orig) {
  return orig ? orig : function(searchElement, opt_fromIndex) {
    var array = this;
    array instanceof String && (array = String(array));
    var len = array.length, i = opt_fromIndex || 0;
    for (0 > i && (i = Math.max(i + len, 0)); i < len; i++) {
      var element = array[i];
      if (element === searchElement || Object.is(element, searchElement)) {
        return !0;
      }
    }
    return !1;
  };
}, "es7", "es3");
$jscomp.polyfill("String.prototype.includes", function(orig) {
  return orig ? orig : function(searchString, opt_position) {
    return -1 !== $jscomp.checkStringArgs(this, searchString, "includes").indexOf(searchString, opt_position || 0);
  };
}, "es6", "es3");
$jscomp.findInternal = function(array, callback, thisArg) {
  array instanceof String && (array = String(array));
  for (var len = array.length, i = 0; i < len; i++) {
    var value = array[i];
    if (callback.call(thisArg, value, i, array)) {
      return {i:i, v:value};
    }
  }
  return {i:-1, v:void 0};
};
$jscomp.polyfill("Array.prototype.find", function(orig) {
  return orig ? orig : function(callback, opt_thisArg) {
    return $jscomp.findInternal(this, callback, opt_thisArg).v;
  };
}, "es6", "es3");
$jscomp.polyfill("Set", function(NativeSet) {
  function isConformant() {
    if ($jscomp.ASSUME_NO_NATIVE_SET || !NativeSet || "function" != typeof NativeSet || !NativeSet.prototype.entries || "function" != typeof Object.seal) {
      return !1;
    }
    try {
      var value = Object.seal({x:4}), set = new NativeSet($jscomp.makeIterator([value]));
      if (!set.has(value) || 1 != set.size || set.add(value) != set || 1 != set.size || set.add({x:4}) != set || 2 != set.size) {
        return !1;
      }
      var iter = set.entries(), item = iter.next();
      if (item.done || item.value[0] != value || item.value[1] != value) {
        return !1;
      }
      item = iter.next();
      return item.done || item.value[0] == value || 4 != item.value[0].x || item.value[1] != item.value[0] ? !1 : iter.next().done;
    } catch (err) {
      return !1;
    }
  }
  if ($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS) {
    if (NativeSet && $jscomp.ES6_CONFORMANCE) {
      return NativeSet;
    }
  } else {
    if (isConformant()) {
      return NativeSet;
    }
  }
  var PolyfillSet = function(opt_iterable) {
    this.map_ = new Map();
    if (opt_iterable) {
      for (var iter = $jscomp.makeIterator(opt_iterable), entry; !(entry = iter.next()).done;) {
        this.add(entry.value);
      }
    }
    this.size = this.map_.size;
  };
  PolyfillSet.prototype.add = function(value) {
    value = 0 === value ? 0 : value;
    this.map_.set(value, value);
    this.size = this.map_.size;
    return this;
  };
  PolyfillSet.prototype.delete = function(value) {
    var result = this.map_.delete(value);
    this.size = this.map_.size;
    return result;
  };
  PolyfillSet.prototype.clear = function() {
    this.map_.clear();
    this.size = 0;
  };
  PolyfillSet.prototype.has = function(value) {
    return this.map_.has(value);
  };
  PolyfillSet.prototype.entries = function() {
    return this.map_.entries();
  };
  PolyfillSet.prototype.values = function() {
    return this.map_.values();
  };
  PolyfillSet.prototype.keys = PolyfillSet.prototype.values;
  PolyfillSet.prototype[Symbol.iterator] = PolyfillSet.prototype.values;
  PolyfillSet.prototype.forEach = function(callback, opt_thisArg) {
    var set = this;
    this.map_.forEach(function(value) {
      return callback.call(opt_thisArg, value, value, set);
    });
  };
  return PolyfillSet;
}, "es6", "es3");
$jscomp.polyfill("String.prototype.trimLeft", function(orig) {
  function polyfill() {
    return this.replace(/^[\s\xa0]+/, "");
  }
  return orig || polyfill;
}, "es_2019", "es3");
$jscomp.polyfill("Object.values", function(orig) {
  return orig ? orig : function(obj) {
    var result = [], key;
    for (key in obj) {
      $jscomp.owns(obj, key) && result.push(obj[key]);
    }
    return result;
  };
}, "es8", "es3");
$jscomp.stringPadding = function(padString, padLength) {
  var padding = void 0 !== padString ? String(padString) : " ";
  return 0 < padLength && padding ? padding.repeat(Math.ceil(padLength / padding.length)).substring(0, padLength) : "";
};
$jscomp.polyfill("String.prototype.padStart", function(orig) {
  return orig ? orig : function(targetLength, opt_padString) {
    var string = $jscomp.checkStringArgs(this, null, "padStart");
    return $jscomp.stringPadding(opt_padString, targetLength - string.length) + string;
  };
}, "es8", "es3");
var CLOSURE_TOGGLE_ORDINALS = {GoogFlags__async_throw_on_unicode_to_byte__enable:!1, GoogFlags__client_only_wiz_component_stacks__disable:!1, GoogFlags__client_only_wiz_reaction_async_await__disable:!1, GoogFlags__jspb_stop_using_repeated_field_sets_from_gencode__enable:!1, GoogFlags__override_disable_toggles:!1, GoogFlags__testonly_debug_flag__enable:!1, GoogFlags__testonly_disabled_flag__enable:!1, GoogFlags__testonly_stable_flag__disable:!1, GoogFlags__testonly_staging_flag__disable:!1, GoogFlags__use_toggles:!1, 
GoogFlags__use_user_agent_client_hints__enable:!1};
/*

 Copyright The Closure Library Authors.
 SPDX-License-Identifier: Apache-2.0
*/
var isChrome87, goog = goog || {};
goog.global = this || self;
goog.exportPath_ = function(name, object, overwriteImplicit, objectToExportTo) {
  var parts = name.split("."), cur = objectToExportTo || goog.global;
  parts[0] in cur || "undefined" == typeof cur.execScript || cur.execScript("var " + parts[0]);
  for (var part; parts.length && (part = parts.shift());) {
    if (parts.length || void 0 === object) {
      cur = cur[part] && cur[part] !== Object.prototype[part] ? cur[part] : cur[part] = {};
    } else {
      if (!overwriteImplicit && goog.isObject(object) && goog.isObject(cur[part])) {
        for (var prop in object) {
          object.hasOwnProperty(prop) && (cur[part][prop] = object[prop]);
        }
      } else {
        cur[part] = object;
      }
    }
  }
};
goog.define = function(name, defaultValue) {
  var defines, uncompiledDefines;
  return defaultValue;
};
goog.FEATURESET_YEAR = 2012;
goog.DEBUG = !0;
goog.LOCALE = "en";
goog.TRUSTED_SITE = !0;
goog.DISALLOW_TEST_ONLY_CODE = !goog.DEBUG;
goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1;
goog.readFlagInternalDoNotUseOrElse = function(googFlagId, defaultValue) {
  var obj = goog.getObjectByName(goog.FLAGS_OBJECT_), val = obj && obj[googFlagId];
  return null != val ? val : defaultValue;
};
goog.FLAGS_OBJECT_ = "CLOSURE_FLAGS";
goog.FLAGS_STAGING_DEFAULT = !0;
goog.readToggleInternalDoNotCallDirectly = function(name) {
  var ordinals = "object" === typeof CLOSURE_TOGGLE_ORDINALS ? CLOSURE_TOGGLE_ORDINALS : void 0, ordinal = ordinals && ordinals[name];
  return "number" !== typeof ordinal ? !!ordinal : !!(goog.TOGGLES_[Math.floor(ordinal / 30)] & 1 << ordinal % 30);
};
goog.TOGGLE_VAR_ = "_F_toggles";
goog.TOGGLES_ = goog.global[goog.TOGGLE_VAR_] || [];
goog.LEGACY_NAMESPACE_OBJECT_ = goog.global;
goog.provide = function(name) {
  if (goog.isInModuleLoader_()) {
    throw Error("goog.provide cannot be used within a module.");
  }
  goog.constructNamespace_(name);
};
goog.constructNamespace_ = function(name, object, overwriteImplicit) {
  var namespace;
  goog.exportPath_(name, object, overwriteImplicit, goog.LEGACY_NAMESPACE_OBJECT_);
};
goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/;
goog.getScriptNonce_ = function(opt_window) {
  var doc = (opt_window || goog.global).document, script = doc.querySelector && doc.querySelector("script[nonce]");
  if (script) {
    var nonce = script.nonce || script.getAttribute("nonce");
    if (nonce && goog.NONCE_PATTERN_.test(nonce)) {
      return nonce;
    }
  }
  return "";
};
goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
goog.module = function(name) {
  if ("string" !== typeof name || !name || -1 == name.search(goog.VALID_MODULE_RE_)) {
    throw Error("Invalid module identifier");
  }
  if (!goog.isInGoogModuleLoader_()) {
    throw Error("Module " + name + " has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");
  }
  if (goog.moduleLoaderState_.moduleName) {
    throw Error("goog.module may only be called once per module.");
  }
  goog.moduleLoaderState_.moduleName = name;
};
goog.module.get = function(name) {
  return goog.module.getInternal_(name);
};
goog.module.getInternal_ = function(name) {
  var ns;
  return null;
};
goog.requireDynamic = function(name) {
  return null;
};
goog.importHandler_ = null;
goog.uncompiledChunkIdHandler_ = null;
goog.setImportHandlerInternalDoNotCallOrElse = function(fn) {
  goog.importHandler_ = fn;
};
goog.setUncompiledChunkIdHandlerInternalDoNotCallOrElse = function(fn) {
  goog.uncompiledChunkIdHandler_ = fn;
};
goog.maybeRequireFrameworkInternalOnlyDoNotCallOrElse = function(namespace) {
};
goog.ModuleType = {ES6:"es6", GOOG:"goog"};
goog.moduleLoaderState_ = null;
goog.isInModuleLoader_ = function() {
  return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_();
};
goog.isInGoogModuleLoader_ = function() {
  return !!goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.GOOG;
};
goog.isInEs6ModuleLoader_ = function() {
  if (goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.ES6) {
    return !0;
  }
  var jscomp = goog.LEGACY_NAMESPACE_OBJECT_.$jscomp;
  return jscomp ? "function" != typeof jscomp.getCurrentModulePath ? !1 : !!jscomp.getCurrentModulePath() : !1;
};
goog.module.declareLegacyNamespace = function() {
  goog.moduleLoaderState_.declareLegacyNamespace = !0;
};
goog.declareModuleId = function(namespace) {
  if (goog.moduleLoaderState_) {
    goog.moduleLoaderState_.moduleName = namespace;
  } else {
    var jscomp = goog.LEGACY_NAMESPACE_OBJECT_.$jscomp;
    if (!jscomp || "function" != typeof jscomp.getCurrentModulePath) {
      throw Error('Module with namespace "' + namespace + '" has been loaded incorrectly.');
    }
    var exports = jscomp.require(jscomp.getCurrentModulePath());
    goog.loadedModules_[namespace] = {exports:exports, type:goog.ModuleType.ES6, moduleId:namespace};
  }
};
goog.setTestOnly = function(opt_message) {
  if (goog.DISALLOW_TEST_ONLY_CODE) {
    throw opt_message = opt_message || "", Error("Importing test-only code into non-debug environment" + (opt_message ? ": " + opt_message : "."));
  }
};
goog.forwardDeclare = function(name) {
};
goog.getObjectByName = function(name, opt_obj) {
  for (var parts = name.split("."), cur = opt_obj || goog.global, i = 0; i < parts.length; i++) {
    if (cur = cur[parts[i]], null == cur) {
      return null;
    }
  }
  return cur;
};
goog.addDependency = function(relPath, provides, requires, opt_loadFlags) {
};
goog.ENABLE_DEBUG_LOADER = !1;
goog.logToConsole_ = function(msg) {
  goog.global.console && goog.global.console.error(msg);
};
goog.require = function(namespace) {
  var moduleLoaderState;
};
goog.requireType = function(namespace) {
  return {};
};
goog.basePath = "";
goog.abstractMethod = function() {
  throw Error("unimplemented abstract method");
};
goog.addSingletonGetter = function(ctor) {
  ctor.instance_ = void 0;
  ctor.getInstance = function() {
    if (ctor.instance_) {
      return ctor.instance_;
    }
    goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor);
    return ctor.instance_ = new ctor();
  };
};
goog.instantiatedSingletons_ = [];
goog.LOAD_MODULE_USING_EVAL = !0;
goog.SEAL_MODULE_EXPORTS = goog.DEBUG;
goog.loadedModules_ = {};
goog.DEPENDENCIES_ENABLED = !1;
goog.ASSUME_ES_MODULES_TRANSPILED = !1;
goog.TRUSTED_TYPES_POLICY_NAME = "goog";
goog.hasBadLetScoping = null;
goog.loadModule = function(moduleDef) {
  var previousState = goog.moduleLoaderState_;
  try {
    goog.moduleLoaderState_ = {moduleName:"", declareLegacyNamespace:!1, type:goog.ModuleType.GOOG};
    var origExports = {}, exports = origExports;
    if ("function" === typeof moduleDef) {
      exports = moduleDef.call(void 0, exports);
    } else if ("string" === typeof moduleDef) {
      exports = goog.loadModuleFromSource_.call(void 0, exports, moduleDef);
    } else {
      throw Error("Invalid module definition");
    }
    var moduleName = goog.moduleLoaderState_.moduleName;
    if ("string" === typeof moduleName && moduleName) {
      goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(moduleName, exports, origExports !== exports) : goog.SEAL_MODULE_EXPORTS && Object.seal && "object" == typeof exports && null != exports && Object.seal(exports), goog.loadedModules_[moduleName] = {exports:exports, type:goog.ModuleType.GOOG, moduleId:goog.moduleLoaderState_.moduleName};
    } else {
      throw Error('Invalid module name "' + moduleName + '"');
    }
  } finally {
    goog.moduleLoaderState_ = previousState;
  }
};
goog.loadModuleFromSource_ = function(exports, JSCompiler_OptimizeArgumentsArray_p0) {
  eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(JSCompiler_OptimizeArgumentsArray_p0));
  return exports;
};
goog.normalizePath_ = function(path) {
  for (var components = path.split("/"), i = 0; i < components.length;) {
    "." == components[i] ? components.splice(i, 1) : i && ".." == components[i] && components[i - 1] && ".." != components[i - 1] ? components.splice(--i, 2) : i++;
  }
  return components.join("/");
};
goog.loadFileSync_ = function(src) {
  if (goog.global.CLOSURE_LOAD_FILE_SYNC) {
    return goog.global.CLOSURE_LOAD_FILE_SYNC(src);
  }
  try {
    var xhr = new goog.global.XMLHttpRequest();
    xhr.open("get", src, !1);
    xhr.send();
    return 0 == xhr.status || 200 == xhr.status ? xhr.responseText : null;
  } catch (err) {
    return null;
  }
};
goog.typeOf = function(value) {
  var s = typeof value;
  return "object" != s ? s : value ? Array.isArray(value) ? "array" : s : "null";
};
goog.isArrayLike = function(val) {
  var type = goog.typeOf(val);
  return "array" == type || "object" == type && "number" == typeof val.length;
};
goog.isDateLike = function(val) {
  return goog.isObject(val) && "function" == typeof val.getFullYear;
};
goog.isObject = function(val) {
  var type = typeof val;
  return "object" == type && null != val || "function" == type;
};
goog.getUid = function(obj) {
  return Object.prototype.hasOwnProperty.call(obj, goog.UID_PROPERTY_) && obj[goog.UID_PROPERTY_] || (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_);
};
goog.hasUid = function(obj) {
  return !!obj[goog.UID_PROPERTY_];
};
goog.removeUid = function(obj) {
  null !== obj && "removeAttribute" in obj && obj.removeAttribute(goog.UID_PROPERTY_);
  try {
    delete obj[goog.UID_PROPERTY_];
  } catch (ex) {
  }
};
goog.UID_PROPERTY_ = "closure_uid_" + (1E9 * Math.random() >>> 0);
goog.uidCounter_ = 0;
goog.cloneObject = function(obj) {
  var type = goog.typeOf(obj);
  if ("object" == type || "array" == type) {
    if ("function" === typeof obj.clone) {
      return obj.clone();
    }
    if ("undefined" !== typeof Map && obj instanceof Map) {
      return new Map(obj);
    }
    if ("undefined" !== typeof Set && obj instanceof Set) {
      return new Set(obj);
    }
    var clone = "array" == type ? [] : {}, key;
    for (key in obj) {
      clone[key] = goog.cloneObject(obj[key]);
    }
    return clone;
  }
  return obj;
};
goog.bindNative_ = function(fn, selfObj, var_args) {
  return fn.call.apply(fn.bind, arguments);
};
goog.bindJs_ = function(fn, selfObj, var_args) {
  if (!fn) {
    throw Error();
  }
  if (2 < arguments.length) {
    var boundArgs = Array.prototype.slice.call(arguments, 2);
    return function() {
      var newArgs = Array.prototype.slice.call(arguments);
      Array.prototype.unshift.apply(newArgs, boundArgs);
      return fn.apply(selfObj, newArgs);
    };
  }
  return function() {
    return fn.apply(selfObj, arguments);
  };
};
goog.bind = function(fn, selfObj, var_args) {
  Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_;
  return goog.bind.apply(null, arguments);
};
goog.partial = function(fn, var_args) {
  var args = Array.prototype.slice.call(arguments, 1);
  return function() {
    var newArgs = args.slice();
    newArgs.push.apply(newArgs, arguments);
    return fn.apply(this, newArgs);
  };
};
goog.now = function() {
  return Date.now();
};
goog.globalEval = function(script) {
  (0,eval)(script);
};
goog.getCssName = function(className, opt_modifier) {
  if ("." == String(className).charAt(0)) {
    throw Error('className passed in goog.getCssName must not start with ".". You passed: ' + className);
  }
  var getMapping = function(cssName) {
    return goog.cssNameMapping_[cssName] || cssName;
  }, renameByParts = function(cssName) {
    for (var parts = cssName.split("-"), mapped = [], i = 0; i < parts.length; i++) {
      mapped.push(getMapping(parts[i]));
    }
    return mapped.join("-");
  };
  var rename = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? getMapping : renameByParts : function(a) {
    return a;
  };
  var result = opt_modifier ? className + "-" + rename(opt_modifier) : rename(className);
  return goog.global.CLOSURE_CSS_NAME_MAP_FN ? goog.global.CLOSURE_CSS_NAME_MAP_FN(result) : result;
};
goog.setCssNameMapping = function(mapping, opt_style) {
  goog.cssNameMapping_ = mapping;
  goog.cssNameMappingStyle_ = opt_style;
};
goog.GetMsgOptions = function() {
};
goog.getMsg = function(str, opt_values, opt_options) {
  opt_options && opt_options.html && (str = str.replace(/</g, "&lt;"));
  opt_options && opt_options.unescapeHtmlEntities && (str = str.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&apos;/g, "'").replace(/&quot;/g, '"').replace(/&amp;/g, "&"));
  opt_values && (str = str.replace(/\{\$([^}]+)}/g, function(match, key) {
    return null != opt_values && key in opt_values ? opt_values[key] : match;
  }));
  return str;
};
goog.getMsgWithFallback = function(a, b) {
  return a;
};
goog.exportSymbol = function(publicPath, object, objectToExportTo) {
  goog.exportPath_(publicPath, object, !0, objectToExportTo);
};
goog.exportProperty = function(object, publicName, symbol) {
  object[publicName] = symbol;
};
goog.inherits = function(childCtor, parentCtor) {
  function tempCtor() {
  }
  tempCtor.prototype = parentCtor.prototype;
  childCtor.superClass_ = parentCtor.prototype;
  childCtor.prototype = new tempCtor();
  childCtor.prototype.constructor = childCtor;
  childCtor.base = function(me, methodName, var_args) {
    for (var args = Array(arguments.length - 2), i = 2; i < arguments.length; i++) {
      args[i - 2] = arguments[i];
    }
    return parentCtor.prototype[methodName].apply(me, args);
  };
};
goog.scope = function(fn) {
  if (goog.isInModuleLoader_()) {
    throw Error("goog.scope is not supported within a module.");
  }
  fn.call(goog.global);
};
goog.defineClass = function(superClass, def) {
  var constructor = def.constructor, statics = def.statics;
  constructor && constructor != Object.prototype.constructor || (constructor = function() {
    throw Error("cannot instantiate an interface (no constructor defined).");
  });
  var cls = goog.defineClass.createSealingConstructor_(constructor, superClass);
  superClass && goog.inherits(cls, superClass);
  delete def.constructor;
  delete def.statics;
  goog.defineClass.applyProperties_(cls.prototype, def);
  null != statics && (statics instanceof Function ? statics(cls) : goog.defineClass.applyProperties_(cls, statics));
  return cls;
};
goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG;
goog.defineClass.createSealingConstructor_ = function(ctr, superClass) {
  return goog.defineClass.SEAL_CLASS_INSTANCES ? function() {
    var instance = ctr.apply(this, arguments) || this;
    instance[goog.UID_PROPERTY_] = instance[goog.UID_PROPERTY_];
    return instance;
  } : ctr;
};
goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
goog.defineClass.applyProperties_ = function(target, source) {
  for (var key in source) {
    Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
  }
  for (var i = 0; i < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; i++) {
    key = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[i], Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
  }
};
goog.identity_ = function(s) {
  return s;
};
goog.createTrustedTypesPolicy = function(name) {
  var policy = null, policyFactory = goog.global.trustedTypes;
  if (!policyFactory || !policyFactory.createPolicy) {
    return policy;
  }
  try {
    policy = policyFactory.createPolicy(name, {createHTML:goog.identity_, createScript:goog.identity_, createScriptURL:goog.identity_});
  } catch (e) {
    goog.logToConsole_(e.message);
  }
  return policy;
};
var module$exports$tslib = {}, module$contents$tslib_extendStatics = Object.setPrototypeOf || function(d, b) {
  for (var p in b) {
    Object.prototype.hasOwnProperty.call(b, p) && (d[p] = b[p]);
  }
};
module$exports$tslib.__extends = function(d, b) {
  function __() {
    this.constructor = d;
  }
  module$contents$tslib_extendStatics(d, b);
  d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __());
};
module$exports$tslib.__assign = Object.assign || function(t) {
  for (var s, i = 1, n = arguments.length; i < n; i++) {
    s = arguments[i];
    for (var p in s) {
      Object.prototype.hasOwnProperty.call(s, p) && (t[p] = s[p]);
    }
  }
  return t;
};
module$exports$tslib.__rest = function(s, e) {
  var t = {}, p;
  for (p in s) {
    Object.prototype.hasOwnProperty.call(s, p) && 0 > e.indexOf(p) && (t[p] = s[p]);
  }
  if (null != s && "function" === typeof Object.getOwnPropertySymbols) {
    var i = 0;
    for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
      0 > e.indexOf(p[i]) && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
    }
  }
  return t;
};
module$exports$tslib.__decorate = function(decorators, target, key, desc) {
  var c = arguments.length, r = 3 > c ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  if ("object" === typeof Reflect && Reflect && "function" === typeof Reflect.decorate) {
    r = Reflect.decorate(decorators, target, key, desc);
  } else {
    for (var i = decorators.length - 1; 0 <= i; i--) {
      if (d = decorators[i]) {
        r = (3 > c ? d(r) : 3 < c ? d(target, key, r) : d(target, key)) || r;
      }
    }
  }
  return 3 < c && r && Object.defineProperty(target, key, r), r;
};
module$exports$tslib.__param = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
module$exports$tslib.__setFunctionName = function(f, name, prefix) {
  "symbol" === typeof name && (name = name.description ? "[".concat(name.description, "]") : "");
  return Object.defineProperty(f, "name", {configurable:!0, value:prefix ? "".concat(prefix, " ", name) : name});
};
module$exports$tslib.__metadata = function(metadataKey, metadataValue) {
  if ("object" === typeof Reflect && Reflect && "function" === typeof Reflect.metadata) {
    return Reflect.metadata(metadataKey, metadataValue);
  }
};
module$exports$tslib.__awaiter = function(thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function(resolve) {
      resolve(value);
    });
  }
  return new (P || (P = Promise))(function(resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }
    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }
    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }
    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};
module$exports$tslib.__generator = function(thisArg, body) {
  function verb(n) {
    return function(v) {
      return step([n, v]);
    };
  }
  function step(op) {
    if (f) {
      throw new TypeError("Generator is already executing.");
    }
    for (; _;) {
      try {
        if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) {
          return t;
        }
        if (y = 0, t) {
          op = [op[0] & 2, t.value];
        }
        switch(op[0]) {
          case 0:
          case 1:
            t = op;
            break;
          case 4:
            return _.label++, {value:op[1], done:!1};
          case 5:
            _.label++;
            y = op[1];
            op = [0];
            continue;
          case 7:
            op = _.ops.pop();
            _.trys.pop();
            continue;
          default:
            if (!(t = _.trys, t = 0 < t.length && t[t.length - 1]) && (6 === op[0] || 2 === op[0])) {
              _ = 0;
              continue;
            }
            if (3 === op[0] && (!t || op[1] > t[0] && op[1] < t[3])) {
              _.label = op[1];
            } else {
              if (6 === op[0] && _.label < t[1]) {
                _.label = t[1], t = op;
              } else {
                if (t && _.label < t[2]) {
                  _.label = t[2], _.ops.push(op);
                } else {
                  t[2] && _.ops.pop();
                  _.trys.pop();
                  continue;
                }
              }
            }
        }
        op = body.call(thisArg, _);
      } catch (e) {
        op = [6, e], y = 0;
      } finally {
        f = t = 0;
      }
    }
    if (op[0] & 5) {
      throw op[1];
    }
    return {value:op[0] ? op[1] : void 0, done:!0};
  }
  var _ = {label:0, sent:function() {
    if (t[0] & 1) {
      throw t[1];
    }
    return t[1];
  }, trys:[], ops:[]}, f, y, t, g;
  return g = {next:verb(0), "throw":verb(1), "return":verb(2)}, "function" === typeof Symbol && (g[Symbol.iterator] = function() {
    return g;
  }), g;
};
module$exports$tslib.__exportStar = function(m, o) {
  for (var p in m) {
    o.hasOwnProperty(p) || (o[p] = m[p]);
  }
};
module$exports$tslib.__values = function(o) {
  var m = "function" === typeof Symbol && o[Symbol.iterator], i = 0;
  return m ? m.call(o) : {next:function() {
    o && i >= o.length && (o = void 0);
    return {value:o && o[i++], done:!o};
  }};
};
module$exports$tslib.__read = function(o, n) {
  var m = "function" === typeof Symbol && o[Symbol.iterator];
  if (!m) {
    return o;
  }
  var i = m.call(o), r, ar = [];
  try {
    for (; (void 0 === n || 0 < n--) && !(r = i.next()).done;) {
      ar.push(r.value);
    }
  } catch (error) {
    var e = {error:error};
  } finally {
    try {
      r && !r.done && (m = i["return"]) && m.call(i);
    } finally {
      if (e) {
        throw e.error;
      }
    }
  }
  return ar;
};
module$exports$tslib.__spread = function() {
  for (var ar = [], i = 0; i < arguments.length; i++) {
    ar = ar.concat(module$exports$tslib.__read(arguments[i]));
  }
  return ar;
};
module$exports$tslib.__spreadArrays = function() {
  for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
    s += arguments[i].length;
  }
  var r = Array(s), k = 0;
  for (i = 0; i < il; i++) {
    for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
      r[k] = a[j];
    }
  }
  return r;
};
module$exports$tslib.__spreadArray = function(to, from, pack) {
  if (!(Array.isArray(from) || from instanceof NodeList) && "[object Arguments]" !== Object.prototype.toString.call(from)) {
    throw new TypeError("Expected an Array, NodeList, or or Arguments: " + String(from));
  }
  if (pack || 2 === arguments.length) {
    for (var i = 0, l = from.length, ar; i < l; i++) {
      !ar && i in from || (ar || (ar = Array.prototype.slice.call(from, 0, i)), ar[i] = from[i]);
    }
  }
  return to.concat(ar || Array.prototype.slice.call(from));
};
module$exports$tslib.__await = function(v) {
  return this instanceof module$exports$tslib.__await ? (this.v = v, this) : new module$exports$tslib.__await(v);
};
module$exports$tslib.__asyncGenerator = function(thisArg, _arguments, generator) {
  function verb(n, f) {
    g[n] && (i[n] = function(v) {
      return new Promise(function(a, b) {
        1 < q.push([n, v, a, b]) || resume(n, v);
      });
    }, f && (i[n] = f(i[n])));
  }
  function resume(n, v) {
    try {
      step(g[n](v));
    } catch (e) {
      settle(q[0][3], e);
    }
  }
  function step(r) {
    r.value instanceof module$exports$tslib.__await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
  }
  function fulfill(value) {
    resume("next", value);
  }
  function reject(value) {
    resume("throw", value);
  }
  function settle(f, v) {
    (f(v), q.shift(), q.length) && resume(q[0][0], q[0][1]);
  }
  if (!Symbol.asyncIterator) {
    throw new TypeError("Symbol.asyncIterator is not defined.");
  }
  var g = generator.apply(thisArg, _arguments || []), i, q = [];
  return i = {}, verb("next"), verb("throw"), verb("return", function(f) {
    return function(v) {
      return Promise.resolve(v).then(f, reject);
    };
  }), i[Symbol.asyncIterator] = function() {
    return this;
  }, i;
};
module$exports$tslib.__asyncDelegator = function(o) {
  function verb(n, f) {
    i[n] = o[n] ? function(v) {
      return (p = !p) ? {value:new module$exports$tslib.__await(o[n](v)), done:"return" === n} : f ? f(v) : v;
    } : f;
  }
  var i, p;
  return i = {}, verb("next"), verb("throw", function(e) {
    throw e;
  }), verb("return"), i[Symbol.iterator] = function() {
    return i;
  }, i;
};
module$exports$tslib.__asyncValues = function(o) {
  function verb(n) {
    i[n] = o[n] && function(v) {
      return new Promise(function(resolve, reject) {
        v = o[n](v);
        settle(resolve, reject, v.done, v.value);
      });
    };
  }
  function settle(resolve, reject, d, v) {
    Promise.resolve(v).then(function(v) {
      resolve({value:v, done:d});
    }, reject);
  }
  if (!Symbol.asyncIterator) {
    throw new TypeError("Symbol.asyncIterator is not defined.");
  }
  var m = o[Symbol.asyncIterator], i;
  return m ? m.call(o) : (o = "function" === typeof __values ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
    return this;
  }, i);
};
module$exports$tslib.__makeTemplateObject = function(cooked, raw) {
  Object.defineProperty ? Object.defineProperty(cooked, "raw", {value:raw}) : cooked.raw = raw;
  return cooked;
};
module$exports$tslib.__classPrivateFieldGet = function(receiver, state, kind, f) {
  if ("a" === kind && !f) {
    throw new TypeError("Private accessor was defined without a getter");
  }
  if ("function" === typeof state ? receiver !== state || !f : !state.has(receiver)) {
    throw new TypeError("Cannot read private member from an object whose class did not declare it");
  }
  return "m" === kind ? f : "a" === kind ? f.call(receiver) : f ? f.value : state.get(receiver);
};
module$exports$tslib.__classPrivateFieldSet = function(receiver, state, value, kind, f) {
  if ("m" === kind) {
    throw new TypeError("Private method is not writable");
  }
  if ("a" === kind && !f) {
    throw new TypeError("Private accessor was defined without a setter");
  }
  if ("function" === typeof state ? receiver !== state || !f : !state.has(receiver)) {
    throw new TypeError("Cannot write private member to an object whose class did not declare it");
  }
  return "a" === kind ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
};
module$exports$tslib.__classPrivateFieldIn = function(state, receiver) {
  if (null === receiver || "object" !== typeof receiver && "function" !== typeof receiver) {
    throw new TypeError("Cannot use 'in' operator on non-object");
  }
  return "function" === typeof state ? receiver === state : state.has(receiver);
};
var module$exports$eeapiclient$domain_object = {}, module$contents$eeapiclient$domain_object_module = module$contents$eeapiclient$domain_object_module || {id:"javascript/typescript/contrib/apiclient/core/domain_object.closure.js"};
module$exports$eeapiclient$domain_object.ObjectMapMetadata = function() {
};
var module$contents$eeapiclient$domain_object_Primitive;
module$exports$eeapiclient$domain_object.ClassMetadata = function() {
};
var module$contents$eeapiclient$domain_object_NullClass = function() {
};
module$exports$eeapiclient$domain_object.NULL_VALUE = new module$contents$eeapiclient$domain_object_NullClass();
module$exports$eeapiclient$domain_object.ISerializable = function() {
};
function module$contents$eeapiclient$domain_object_buildClassMetadataFromPartial(partialClassMetadata) {
  return Object.assign({}, {arrays:{}, descriptions:{}, keys:[], objectMaps:{}, objects:{}, enums:{}, emptyArrayIsUnset:!1}, partialClassMetadata);
}
module$exports$eeapiclient$domain_object.buildClassMetadataFromPartial = module$contents$eeapiclient$domain_object_buildClassMetadataFromPartial;
module$exports$eeapiclient$domain_object.Serializable = function() {
  this.Serializable$values = {};
};
module$exports$eeapiclient$domain_object.Serializable.prototype.getClassMetadata = function() {
  return module$contents$eeapiclient$domain_object_buildClassMetadataFromPartial(this.getPartialClassMetadata());
};
module$exports$eeapiclient$domain_object.Serializable.prototype.Serializable$get = function(key) {
  return this.Serializable$values.hasOwnProperty(key) ? this.Serializable$values[key] : null;
};
module$exports$eeapiclient$domain_object.Serializable.prototype.Serializable$set = function(key, value) {
  this.Serializable$values[key] = value;
};
module$exports$eeapiclient$domain_object.Serializable.prototype.Serializable$has = function(key) {
  return null != this.Serializable$values[key];
};
module$exports$eeapiclient$domain_object.SerializableCtor = function() {
};
module$exports$eeapiclient$domain_object.clone = function(serializable) {
  return module$contents$eeapiclient$domain_object_deserialize(serializable.getConstructor(), module$contents$eeapiclient$domain_object_serialize(serializable));
};
module$exports$eeapiclient$domain_object.isEmpty = function(serializable) {
  return !Object.keys(module$contents$eeapiclient$domain_object_serialize(serializable)).length;
};
function module$contents$eeapiclient$domain_object_serialize(serializable) {
  return module$contents$eeapiclient$domain_object_deepCopy(serializable, module$contents$eeapiclient$domain_object_serializeGetter, module$contents$eeapiclient$domain_object_serializeSetter, module$contents$eeapiclient$domain_object_serializeInstanciator);
}
module$exports$eeapiclient$domain_object.serialize = module$contents$eeapiclient$domain_object_serialize;
function module$contents$eeapiclient$domain_object_serializeGetter(key, obj) {
  return obj.Serializable$get(key);
}
function module$contents$eeapiclient$domain_object_serializeSetter(key, obj, value) {
  obj[key] = value;
}
function module$contents$eeapiclient$domain_object_serializeInstanciator(ctor) {
  return {};
}
function module$contents$eeapiclient$domain_object_deserialize(type, raw) {
  var result = new type();
  return null == raw ? result : module$contents$eeapiclient$domain_object_deepCopy(raw, module$contents$eeapiclient$domain_object_deserializeGetter, module$contents$eeapiclient$domain_object_deserializeSetter, module$contents$eeapiclient$domain_object_deserializeInstanciator, type);
}
module$exports$eeapiclient$domain_object.deserialize = module$contents$eeapiclient$domain_object_deserialize;
function module$contents$eeapiclient$domain_object_deserializeGetter(key, obj) {
  return obj[key];
}
function module$contents$eeapiclient$domain_object_deserializeSetter(key, obj, value) {
  obj.Serializable$set(key, value);
}
function module$contents$eeapiclient$domain_object_deserializeInstanciator(ctor) {
  if (null == ctor) {
    throw Error("Cannot deserialize, target constructor was null.");
  }
  return new ctor();
}
module$exports$eeapiclient$domain_object.strictDeserialize = function(type, raw) {
  return module$contents$eeapiclient$domain_object_deserialize(type, raw);
};
var module$contents$eeapiclient$domain_object_CopyValueGetter, module$contents$eeapiclient$domain_object_CopyValueSetter, module$contents$eeapiclient$domain_object_CopyConstructor, module$contents$eeapiclient$domain_object_CopyInstanciator;
function module$contents$eeapiclient$domain_object_deepCopy(source, valueGetter, valueSetter, copyInstanciator, targetConstructor) {
  for (var target = copyInstanciator(targetConstructor), metadata = module$contents$eeapiclient$domain_object_deepCopyMetadata(source, target), arrays = metadata.arrays || {}, objects = metadata.objects || {}, objectMaps = metadata.objectMaps || {}, $jscomp$iter$19 = $jscomp.makeIterator(metadata.keys || []), $jscomp$key$m1892927425$40$key = $jscomp$iter$19.next(), $jscomp$loop$m1892927425$44 = {}; !$jscomp$key$m1892927425$40$key.done; $jscomp$loop$m1892927425$44 = 
  {mapMetadata:void 0}, $jscomp$key$m1892927425$40$key = $jscomp$iter$19.next()) {
    var key = $jscomp$key$m1892927425$40$key.value, value = valueGetter(key, source);
    if (null != value) {
      var copy = void 0;
      if (arrays.hasOwnProperty(key)) {
        if (metadata.emptyArrayIsUnset && 0 === value.length) {
          continue;
        }
        copy = module$contents$eeapiclient$domain_object_deepCopyValue(value, valueGetter, valueSetter, copyInstanciator, !0, !0, arrays[key]);
      } else if (objects.hasOwnProperty(key)) {
        copy = module$contents$eeapiclient$domain_object_deepCopyValue(value, valueGetter, valueSetter, copyInstanciator, !1, !0, objects[key]);
      } else if (objectMaps.hasOwnProperty(key)) {
        $jscomp$loop$m1892927425$44.mapMetadata = objectMaps[key], copy = $jscomp$loop$m1892927425$44.mapMetadata.isPropertyArray ? value.map(function($jscomp$loop$m1892927425$44) {
          return function(v) {
            return module$contents$eeapiclient$domain_object_deepCopyObjectMap(v, $jscomp$loop$m1892927425$44.mapMetadata, valueGetter, valueSetter, copyInstanciator);
          };
        }($jscomp$loop$m1892927425$44)) : module$contents$eeapiclient$domain_object_deepCopyObjectMap(value, $jscomp$loop$m1892927425$44.mapMetadata, valueGetter, valueSetter, copyInstanciator);
      } else if (Array.isArray(value)) {
        if (metadata.emptyArrayIsUnset && 0 === value.length) {
          continue;
        }
        copy = module$contents$eeapiclient$domain_object_deepCopyValue(value, valueGetter, valueSetter, copyInstanciator, !0, !1);
      } else {
        copy = value instanceof module$contents$eeapiclient$domain_object_NullClass ? null : value;
      }
      valueSetter(key, target, copy);
    }
  }
  return target;
}
function module$contents$eeapiclient$domain_object_deepCopyObjectMap(value, mapMetadata, valueGetter, valueSetter, copyInstanciator) {
  for (var objMap = {}, $jscomp$iter$20 = $jscomp.makeIterator(Object.keys(value)), $jscomp$key$m1892927425$41$mapKey = $jscomp$iter$20.next(); !$jscomp$key$m1892927425$41$mapKey.done; $jscomp$key$m1892927425$41$mapKey = $jscomp$iter$20.next()) {
    var mapKey = $jscomp$key$m1892927425$41$mapKey.value, mapValue = value[mapKey];
    null != mapValue && (objMap[mapKey] = module$contents$eeapiclient$domain_object_deepCopyValue(mapValue, valueGetter, valueSetter, copyInstanciator, mapMetadata.isValueArray, mapMetadata.isSerializable, mapMetadata.ctor));
  }
  return objMap;
}
function module$contents$eeapiclient$domain_object_deepCopyValue(value, valueGetter, valueSetter, copyInstanciator, isArray, isRef, ctor) {
  if (isRef && null == ctor) {
    throw Error("Cannot deserialize a reference object without a constructor.");
  }
  return null == value ? value : isArray && isRef ? value.map(function(v) {
    return module$contents$eeapiclient$domain_object_deepCopy(v, valueGetter, valueSetter, copyInstanciator, ctor);
  }) : isArray && !isRef ? value.map(function(v) {
    return v;
  }) : !isArray && isRef ? module$contents$eeapiclient$domain_object_deepCopy(value, valueGetter, valueSetter, copyInstanciator, ctor) : value instanceof module$contents$eeapiclient$domain_object_NullClass ? null : "object" === typeof value ? JSON.parse(JSON.stringify(value)) : value;
}
function module$contents$eeapiclient$domain_object_deepCopyMetadata(source, target) {
  if (target instanceof module$exports$eeapiclient$domain_object.Serializable) {
    var metadata = target.getClassMetadata();
  } else if (source instanceof module$exports$eeapiclient$domain_object.Serializable) {
    metadata = source.getClassMetadata();
  } else {
    throw Error("Cannot find ClassMetadata.");
  }
  return metadata;
}
function module$contents$eeapiclient$domain_object_deepEquals(serializable1, serializable2) {
  var metadata1 = serializable1.getClassMetadata(), keys1 = metadata1.keys || [], arrays1 = metadata1.arrays || {}, objects1 = metadata1.objects || {}, objectMaps1 = metadata1.objectMaps || {}, metadata2 = serializable2.getClassMetadata(), arrays2 = metadata2.arrays || {}, objects2 = metadata2.objects || {}, objectMaps2 = metadata2.objectMaps || {};
  if (!(module$contents$eeapiclient$domain_object_sameKeys(keys1, metadata2.keys || []) && module$contents$eeapiclient$domain_object_sameKeys(arrays1, arrays2) && module$contents$eeapiclient$domain_object_sameKeys(objects1, objects2) && module$contents$eeapiclient$domain_object_sameKeys(objectMaps1, objectMaps2))) {
    return !1;
  }
  for (var $jscomp$iter$21 = $jscomp.makeIterator(keys1), $jscomp$key$m1892927425$42$key = $jscomp$iter$21.next(), $jscomp$loop$m1892927425$45 = {}; !$jscomp$key$m1892927425$42$key.done; $jscomp$loop$m1892927425$45 = {value2$jscomp$7:void 0, mapMetadata$jscomp$2:void 0}, $jscomp$key$m1892927425$42$key = $jscomp$iter$21.next()) {
    var key = $jscomp$key$m1892927425$42$key.value, has1 = module$contents$eeapiclient$domain_object_hasAndIsNotEmptyArray(serializable1, key, metadata1), has2 = module$contents$eeapiclient$domain_object_hasAndIsNotEmptyArray(serializable2, key, metadata2);
    if (has1 !== has2) {
      return !1;
    }
    if (has1) {
      var value1 = serializable1.Serializable$get(key);
      $jscomp$loop$m1892927425$45.value2$jscomp$7 = serializable2.Serializable$get(key);
      if (arrays1.hasOwnProperty(key)) {
        if (!module$contents$eeapiclient$domain_object_deepEqualsValue(value1, $jscomp$loop$m1892927425$45.value2$jscomp$7, !0, !0)) {
          return !1;
        }
      } else if (objects1.hasOwnProperty(key)) {
        if (!module$contents$eeapiclient$domain_object_deepEqualsValue(value1, $jscomp$loop$m1892927425$45.value2$jscomp$7, !1, !0)) {
          return !1;
        }
      } else if (objectMaps1.hasOwnProperty(key)) {
        if ($jscomp$loop$m1892927425$45.mapMetadata$jscomp$2 = objectMaps1[key], $jscomp$loop$m1892927425$45.mapMetadata$jscomp$2.isPropertyArray) {
          if (!module$contents$eeapiclient$domain_object_sameKeys(value1, $jscomp$loop$m1892927425$45.value2$jscomp$7) || value1.some(function($jscomp$loop$m1892927425$45) {
            return function(v1, i) {
              return !module$contents$eeapiclient$domain_object_deepEqualsObjectMap(v1, $jscomp$loop$m1892927425$45.value2$jscomp$7[i], $jscomp$loop$m1892927425$45.mapMetadata$jscomp$2);
            };
          }($jscomp$loop$m1892927425$45))) {
            return !1;
          }
        } else if (!module$contents$eeapiclient$domain_object_deepEqualsObjectMap(value1, $jscomp$loop$m1892927425$45.value2$jscomp$7, $jscomp$loop$m1892927425$45.mapMetadata$jscomp$2)) {
          return !1;
        }
      } else if (Array.isArray(value1)) {
        if (!module$contents$eeapiclient$domain_object_deepEqualsValue(value1, $jscomp$loop$m1892927425$45.value2$jscomp$7, !0, !1)) {
          return !1;
        }
      } else if (!module$contents$eeapiclient$domain_object_deepEqualsValue(value1, $jscomp$loop$m1892927425$45.value2$jscomp$7, !1, !1)) {
        return !1;
      }
    }
  }
  return !0;
}
module$exports$eeapiclient$domain_object.deepEquals = module$contents$eeapiclient$domain_object_deepEquals;
function module$contents$eeapiclient$domain_object_hasAndIsNotEmptyArray(serializable, key, metadata) {
  if (!serializable.Serializable$has(key)) {
    return !1;
  }
  if (!metadata.emptyArrayIsUnset) {
    return !0;
  }
  var value = serializable.Serializable$get(key);
  return Array.isArray(value) ? 0 !== value.length : !0;
}
function module$contents$eeapiclient$domain_object_deepEqualsObjectMap(value1, value2, mapMetadata) {
  if (!module$contents$eeapiclient$domain_object_sameKeys(value1, value2)) {
    return !1;
  }
  for (var $jscomp$iter$22 = $jscomp.makeIterator(Object.keys(value1)), $jscomp$key$m1892927425$43$mapKey = $jscomp$iter$22.next(); !$jscomp$key$m1892927425$43$mapKey.done; $jscomp$key$m1892927425$43$mapKey = $jscomp$iter$22.next()) {
    var mapKey = $jscomp$key$m1892927425$43$mapKey.value;
    if (!module$contents$eeapiclient$domain_object_deepEqualsValue(value1[mapKey], value2[mapKey], mapMetadata.isValueArray, mapMetadata.isSerializable)) {
      return !1;
    }
  }
  return !0;
}
function module$contents$eeapiclient$domain_object_deepEqualsValue(value1, value2, isArray, isSerializable) {
  if (null == value1 && null == value2) {
    return !0;
  }
  if (isArray && isSerializable) {
    if (!module$contents$eeapiclient$domain_object_sameKeys(value1, value2) || value1.some(function(v1, i) {
      return !module$contents$eeapiclient$domain_object_deepEquals(v1, value2[i]);
    })) {
      return !1;
    }
  } else if (isArray && !isSerializable) {
    if (!module$contents$eeapiclient$domain_object_sameKeys(value1, value2) || value1.some(function(v, i) {
      return v !== value2[i];
    })) {
      return !1;
    }
  } else {
    if (isSerializable) {
      return module$contents$eeapiclient$domain_object_deepEquals(value1, value2);
    }
    if ("object" === typeof value1) {
      if (JSON.stringify(value1) !== JSON.stringify(value2)) {
        return !1;
      }
    } else if (value1 !== value2) {
      return !1;
    }
  }
  return !0;
}
function module$contents$eeapiclient$domain_object_sameKeys(a, b) {
  if (typeof a !== typeof b || Array.isArray(a) !== Array.isArray(b)) {
    throw Error("Types are not comparable.");
  }
  var aKeys = Object.keys(a), bKeys = Object.keys(b);
  if (aKeys.length !== bKeys.length) {
    return !1;
  }
  Array.isArray(a) || (aKeys.sort(), bKeys.sort());
  for (var i = 0; i < aKeys.length; i++) {
    if (aKeys[i] !== bKeys[i]) {
      return !1;
    }
  }
  return !0;
}
module$exports$eeapiclient$domain_object.serializableEqualityTester = function(left, right) {
  if (left instanceof module$exports$eeapiclient$domain_object.Serializable && right instanceof module$exports$eeapiclient$domain_object.Serializable) {
    return module$contents$eeapiclient$domain_object_deepEquals(left, right);
  }
};
var module$exports$eeapiclient$multipart_request = {}, module$contents$eeapiclient$multipart_request_module = module$contents$eeapiclient$multipart_request_module || {id:"javascript/typescript/contrib/apiclient/core/multipart_request.closure.js"};
module$exports$eeapiclient$multipart_request.MultipartRequest = function(files, _metadata) {
  this.files = files;
  this._metadata = _metadata;
  this._metadataPayload = "";
  this._boundary = Date.now().toString();
  _metadata && this.addMetadata(_metadata);
  this._payloadPromise = this.build();
};
module$exports$eeapiclient$multipart_request.MultipartRequest.prototype.boundary = function() {
  return this._boundary;
};
module$exports$eeapiclient$multipart_request.MultipartRequest.prototype.metadata = function() {
  return this._metadata;
};
module$exports$eeapiclient$multipart_request.MultipartRequest.prototype.payloadPromise = function() {
  return this._payloadPromise;
};
module$exports$eeapiclient$multipart_request.MultipartRequest.prototype.addMetadata = function(metadata) {
  var json = metadata instanceof module$exports$eeapiclient$domain_object.Serializable ? module$contents$eeapiclient$domain_object_serialize(metadata) : metadata;
  this._metadataPayload += "Content-Type: application/json; charset=utf-8\r\n\r\n" + JSON.stringify(json) + ("\r\n--" + this._boundary + "\r\n");
};
module$exports$eeapiclient$multipart_request.MultipartRequest.prototype.build = function() {
  var $jscomp$this$m133342051$6 = this, payload = "--" + this._boundary + "\r\n";
  payload += this._metadataPayload;
  return Promise.all(this.files.map(function(f) {
    return $jscomp$this$m133342051$6.encodeFile(f);
  })).then(function(filePayloads) {
    for (var $jscomp$iter$23 = $jscomp.makeIterator(filePayloads), $jscomp$key$m133342051$9$filePayload = $jscomp$iter$23.next(); !$jscomp$key$m133342051$9$filePayload.done; $jscomp$key$m133342051$9$filePayload = $jscomp$iter$23.next()) {
      payload += $jscomp$key$m133342051$9$filePayload.value;
    }
    return payload += "\r\n--" + $jscomp$this$m133342051$6._boundary + "--";
  });
};
module$exports$eeapiclient$multipart_request.MultipartRequest.prototype.encodeFile = function(file) {
  return this.base64EncodeFile(file).then(function(base64Str) {
    return "Content-Type: " + file.type + '\r\nContent-Disposition: form-data; name="file"; filename="' + (encodeURIComponent(file.name) + '"\r\nContent-Transfer-Encoding: base64\r\n\r\n') + base64Str;
  });
};
module$exports$eeapiclient$multipart_request.MultipartRequest.prototype.base64EncodeFile = function(file) {
  return new Promise(function(resolve, reject) {
    var reader = new FileReader();
    reader.onload = function(ev) {
      try {
        var file = ev.target.result, toResolve = file.substr(file.indexOf(",") + 1);
        resolve(toResolve);
      } catch (e) {
        reject(e);
      }
    };
    reader.readAsDataURL(file);
  });
};
var module$exports$eeapiclient$api_client = {}, module$contents$eeapiclient$api_client_module = module$contents$eeapiclient$api_client_module || {id:"javascript/typescript/contrib/apiclient/core/api_client.closure.js"};
module$exports$eeapiclient$api_client.ApiClient = function() {
};
module$exports$eeapiclient$api_client.ApiClient.prototype.$validateParameter = function(param, pattern) {
  var paramStr = String(param);
  if (!pattern.test(paramStr)) {
    throw Error("parameter [" + paramStr + "] does not match pattern [" + pattern.toString() + "]");
  }
};
function module$contents$eeapiclient$api_client_toMakeRequestParams(requestParams) {
  var body = requestParams.body instanceof module$exports$eeapiclient$domain_object.Serializable ? module$contents$eeapiclient$domain_object_serialize(requestParams.body) : requestParams.body;
  return {path:requestParams.path, httpMethod:requestParams.httpMethod, methodId:requestParams.methodId, body:body, queryParams:requestParams.queryParams, streamingType:requestParams.streamingType && requestParams.streamingType};
}
module$exports$eeapiclient$api_client.toMakeRequestParams = module$contents$eeapiclient$api_client_toMakeRequestParams;
function module$contents$eeapiclient$api_client_toMultipartMakeRequestParams(requestParams) {
  if (!(requestParams.body instanceof module$exports$eeapiclient$multipart_request.MultipartRequest)) {
    throw Error(requestParams.path + " request must be a MultipartRequest");
  }
  var multipartRequest = requestParams.body;
  return multipartRequest.payloadPromise().then(function(body) {
    var $jscomp$nullish$tmp0, queryParams = null != ($jscomp$nullish$tmp0 = requestParams.queryParams) ? $jscomp$nullish$tmp0 : {};
    return {path:requestParams.path, httpMethod:requestParams.httpMethod, methodId:requestParams.methodId, queryParams:Object.assign({}, queryParams, {uploadType:"multipart"}), headers:{"X-Goog-Upload-Protocol":"multipart", "Content-Type":"multipart/related; boundary=" + multipartRequest.boundary()}, body:body};
  });
}
module$exports$eeapiclient$api_client.toMultipartMakeRequestParams = module$contents$eeapiclient$api_client_toMultipartMakeRequestParams;
var module$exports$eeapiclient$api_request_hook = {}, module$contents$eeapiclient$api_request_hook_module = module$contents$eeapiclient$api_request_hook_module || {id:"javascript/typescript/contrib/apiclient/core/api_request_hook.closure.js"};
module$exports$eeapiclient$api_request_hook.ApiClientRequestHook = function() {
};
module$exports$eeapiclient$api_request_hook.ApiClientHookFactory = function() {
};
module$exports$eeapiclient$api_request_hook.ApiClientHookFactoryCtor = function() {
};
module$exports$eeapiclient$api_request_hook.DefaultApiClientHookFactory = function() {
};
module$exports$eeapiclient$api_request_hook.DefaultApiClientHookFactory.prototype.getRequestHook = function(requestParams) {
  return {onBeforeSend:function() {
  }, onSuccess:function(response) {
  }, onError:function(error) {
  }};
};
function module$contents$eeapiclient$api_request_hook_getRequestHook(factory, requestParams) {
  if (null == factory) {
    return null;
  }
  var hook = factory.getRequestHook(requestParams);
  return null == hook ? null : hook;
}
module$exports$eeapiclient$api_request_hook.getRequestHook = module$contents$eeapiclient$api_request_hook_getRequestHook;
goog.object = {};
function module$contents$goog$object_forEach(obj, f, opt_obj) {
  for (var key in obj) {
    f.call(opt_obj, obj[key], key, obj);
  }
}
function module$contents$goog$object_filter(obj, f, opt_obj) {
  var res = {}, key;
  for (key in obj) {
    f.call(opt_obj, obj[key], key, obj) && (res[key] = obj[key]);
  }
  return res;
}
function module$contents$goog$object_map(obj, f, opt_obj) {
  var res = {}, key;
  for (key in obj) {
    res[key] = f.call(opt_obj, obj[key], key, obj);
  }
  return res;
}
function module$contents$goog$object_some(obj, f, opt_obj) {
  for (var key in obj) {
    if (f.call(opt_obj, obj[key], key, obj)) {
      return !0;
    }
  }
  return !1;
}
function module$contents$goog$object_getCount(obj) {
  var rv = 0, key;
  for (key in obj) {
    rv++;
  }
  return rv;
}
function module$contents$goog$object_contains(obj, val) {
  return module$contents$goog$object_containsValue(obj, val);
}
function module$contents$goog$object_getValues(obj) {
  var res = [], i = 0, key;
  for (key in obj) {
    res[i++] = obj[key];
  }
  return res;
}
function module$contents$goog$object_getKeys(obj) {
  var res = [], i = 0, key;
  for (key in obj) {
    res[i++] = key;
  }
  return res;
}
function module$contents$goog$object_containsKey(obj, key) {
  return null !== obj && key in obj;
}
function module$contents$goog$object_containsValue(obj, val) {
  for (var key in obj) {
    if (obj[key] == val) {
      return !0;
    }
  }
  return !1;
}
function module$contents$goog$object_findKey(obj, f, thisObj) {
  for (var key in obj) {
    if (f.call(thisObj, obj[key], key, obj)) {
      return key;
    }
  }
}
function module$contents$goog$object_isEmpty(obj) {
  for (var key in obj) {
    return !1;
  }
  return !0;
}
function module$contents$goog$object_clear(obj) {
  for (var i in obj) {
    delete obj[i];
  }
}
function module$contents$goog$object_remove(obj, key) {
  var rv;
  (rv = key in obj) && delete obj[key];
  return rv;
}
function module$contents$goog$object_set(obj, key, value) {
  obj[key] = value;
}
function module$contents$goog$object_clone(obj) {
  var res = {}, key;
  for (key in obj) {
    res[key] = obj[key];
  }
  return res;
}
function module$contents$goog$object_unsafeClone(obj) {
  if (!obj || "object" !== typeof obj) {
    return obj;
  }
  if ("function" === typeof obj.clone) {
    return obj.clone();
  }
  if ("undefined" !== typeof Map && obj instanceof Map) {
    return new Map(obj);
  }
  if ("undefined" !== typeof Set && obj instanceof Set) {
    return new Set(obj);
  }
  if (obj instanceof Date) {
    return new Date(obj.getTime());
  }
  var clone = Array.isArray(obj) ? [] : "function" !== typeof ArrayBuffer || "function" !== typeof ArrayBuffer.isView || !ArrayBuffer.isView(obj) || obj instanceof DataView ? {} : new obj.constructor(obj.length), key;
  for (key in obj) {
    clone[key] = module$contents$goog$object_unsafeClone(obj[key]);
  }
  return clone;
}
var module$contents$goog$object_PROTOTYPE_FIELDS = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
function module$contents$goog$object_extend(target, var_args) {
  for (var key, source, i = 1; i < arguments.length; i++) {
    source = arguments[i];
    for (key in source) {
      target[key] = source[key];
    }
    for (var j = 0; j < module$contents$goog$object_PROTOTYPE_FIELDS.length; j++) {
      key = module$contents$goog$object_PROTOTYPE_FIELDS[j], Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
    }
  }
}
function module$contents$goog$object_create(var_args) {
  var argLength = arguments.length;
  if (1 == argLength && Array.isArray(arguments[0])) {
    return module$contents$goog$object_create.apply(null, arguments[0]);
  }
  if (argLength % 2) {
    throw Error("Uneven number of arguments");
  }
  for (var rv = {}, i = 0; i < argLength; i += 2) {
    rv[arguments[i]] = arguments[i + 1];
  }
  return rv;
}
function module$contents$goog$object_createSet(var_args) {
  var argLength = arguments.length;
  if (1 == argLength && Array.isArray(arguments[0])) {
    return module$contents$goog$object_createSet.apply(null, arguments[0]);
  }
  for (var rv = {}, i = 0; i < argLength; i++) {
    rv[arguments[i]] = !0;
  }
  return rv;
}
goog.object.add = function(obj, key, val) {
  if (null !== obj && key in obj) {
    throw Error('The object already contains the key "' + key + '"');
  }
  module$contents$goog$object_set(obj, key, val);
};
goog.object.clear = module$contents$goog$object_clear;
goog.object.clone = module$contents$goog$object_clone;
goog.object.contains = module$contents$goog$object_contains;
goog.object.containsKey = module$contents$goog$object_containsKey;
goog.object.containsValue = module$contents$goog$object_containsValue;
goog.object.create = module$contents$goog$object_create;
goog.object.createImmutableView = function(obj) {
  var result = obj;
  Object.isFrozen && !Object.isFrozen(obj) && (result = Object.create(obj), Object.freeze(result));
  return result;
};
goog.object.createSet = module$contents$goog$object_createSet;
goog.object.equals = function(a, b) {
  for (var k in a) {
    if (!(k in b) || a[k] !== b[k]) {
      return !1;
    }
  }
  for (var k$jscomp$0 in b) {
    if (!(k$jscomp$0 in a)) {
      return !1;
    }
  }
  return !0;
};
goog.object.every = function(obj, f, opt_obj) {
  for (var key in obj) {
    if (!f.call(opt_obj, obj[key], key, obj)) {
      return !1;
    }
  }
  return !0;
};
goog.object.extend = module$contents$goog$object_extend;
goog.object.filter = module$contents$goog$object_filter;
goog.object.findKey = module$contents$goog$object_findKey;
goog.object.findValue = function(obj, f, thisObj) {
  var key = module$contents$goog$object_findKey(obj, f, thisObj);
  return key && obj[key];
};
goog.object.forEach = module$contents$goog$object_forEach;
goog.object.get = function(obj, key, val) {
  return null !== obj && key in obj ? obj[key] : val;
};
goog.object.getAllPropertyNames = function(obj, includeObjectPrototype, includeFunctionPrototype) {
  if (!obj) {
    return [];
  }
  if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) {
    return module$contents$goog$object_getKeys(obj);
  }
  for (var visitedSet = {}, proto = obj; proto && (proto !== Object.prototype || includeObjectPrototype) && (proto !== Function.prototype || includeFunctionPrototype);) {
    for (var names = Object.getOwnPropertyNames(proto), i = 0; i < names.length; i++) {
      visitedSet[names[i]] = !0;
    }
    proto = Object.getPrototypeOf(proto);
  }
  return module$contents$goog$object_getKeys(visitedSet);
};
goog.object.getAnyKey = function(obj) {
  for (var key in obj) {
    return key;
  }
};
goog.object.getAnyValue = function(obj) {
  for (var key in obj) {
    return obj[key];
  }
};
goog.object.getCount = module$contents$goog$object_getCount;
goog.object.getKeys = module$contents$goog$object_getKeys;
goog.object.getSuperClass = function(constructor) {
  var proto = Object.getPrototypeOf(constructor.prototype);
  return proto && proto.constructor;
};
goog.object.getValueByKeys = function(obj, var_args) {
  for (var isArrayLike = goog.isArrayLike(var_args), keys = isArrayLike ? var_args : arguments, i = isArrayLike ? 0 : 1; i < keys.length; i++) {
    if (null == obj) {
      return;
    }
    obj = obj[keys[i]];
  }
  return obj;
};
goog.object.getValues = module$contents$goog$object_getValues;
goog.object.isEmpty = module$contents$goog$object_isEmpty;
goog.object.isImmutableView = function(obj) {
  return !!Object.isFrozen && Object.isFrozen(obj);
};
goog.object.map = module$contents$goog$object_map;
goog.object.remove = module$contents$goog$object_remove;
goog.object.set = module$contents$goog$object_set;
goog.object.setIfUndefined = function(obj, key, value) {
  return key in obj ? obj[key] : obj[key] = value;
};
goog.object.setWithReturnValueIfNotSet = function(obj, key, f) {
  if (key in obj) {
    return obj[key];
  }
  var val = f();
  return obj[key] = val;
};
goog.object.some = module$contents$goog$object_some;
goog.object.transpose = function(obj) {
  var transposed = {}, key;
  for (key in obj) {
    transposed[obj[key]] = key;
  }
  return transposed;
};
goog.object.unsafeClone = module$contents$goog$object_unsafeClone;
goog.string = {};
goog.string.internal = {};
goog.string.internal.startsWith = function(str, prefix) {
  return 0 == str.lastIndexOf(prefix, 0);
};
goog.string.internal.endsWith = function(str, suffix) {
  var l = str.length - suffix.length;
  return 0 <= l && str.indexOf(suffix, l) == l;
};
goog.string.internal.caseInsensitiveStartsWith = function(str, prefix) {
  return 0 == goog.string.internal.caseInsensitiveCompare(prefix, str.slice(0, prefix.length));
};
goog.string.internal.caseInsensitiveEndsWith = function(str, suffix) {
  return 0 == goog.string.internal.caseInsensitiveCompare(suffix, str.slice(str.length - suffix.length));
};
goog.string.internal.caseInsensitiveEquals = function(str1, str2) {
  return str1.toLowerCase() == str2.toLowerCase();
};
goog.string.internal.isEmptyOrWhitespace = function(str) {
  return /^[\s\xa0]*$/.test(str);
};
goog.string.internal.trim = goog.TRUSTED_SITE && String.prototype.trim ? function(str) {
  return str.trim();
} : function(str) {
  return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(str)[1];
};
goog.string.internal.caseInsensitiveCompare = function(str1, str2) {
  var test1 = String(str1).toLowerCase(), test2 = String(str2).toLowerCase();
  return test1 < test2 ? -1 : test1 == test2 ? 0 : 1;
};
goog.string.internal.newLineToBr = function(str, opt_xml) {
  return str.replace(/(\r\n|\r|\n)/g, opt_xml ? "<br />" : "<br>");
};
goog.string.internal.htmlEscape = function(str, opt_isLikelyToContainHtmlChars) {
  if (opt_isLikelyToContainHtmlChars) {
    str = str.replace(goog.string.internal.AMP_RE_, "&amp;").replace(goog.string.internal.LT_RE_, "&lt;").replace(goog.string.internal.GT_RE_, "&gt;").replace(goog.string.internal.QUOT_RE_, "&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_, "&#39;").replace(goog.string.internal.NULL_RE_, "&#0;");
  } else {
    if (!goog.string.internal.ALL_RE_.test(str)) {
      return str;
    }
    -1 != str.indexOf("&") && (str = str.replace(goog.string.internal.AMP_RE_, "&amp;"));
    -1 != str.indexOf("<") && (str = str.replace(goog.string.internal.LT_RE_, "&lt;"));
    -1 != str.indexOf(">") && (str = str.replace(goog.string.internal.GT_RE_, "&gt;"));
    -1 != str.indexOf('"') && (str = str.replace(goog.string.internal.QUOT_RE_, "&quot;"));
    -1 != str.indexOf("'") && (str = str.replace(goog.string.internal.SINGLE_QUOTE_RE_, "&#39;"));
    -1 != str.indexOf("\x00") && (str = str.replace(goog.string.internal.NULL_RE_, "&#0;"));
  }
  return str;
};
goog.string.internal.AMP_RE_ = /&/g;
goog.string.internal.LT_RE_ = /</g;
goog.string.internal.GT_RE_ = />/g;
goog.string.internal.QUOT_RE_ = /"/g;
goog.string.internal.SINGLE_QUOTE_RE_ = /'/g;
goog.string.internal.NULL_RE_ = /\x00/g;
goog.string.internal.ALL_RE_ = /[\x00&<>"']/;
goog.string.internal.whitespaceEscape = function(str, opt_xml) {
  return goog.string.internal.newLineToBr(str.replace(/  /g, " &#160;"), opt_xml);
};
goog.string.internal.contains = function(str, subString) {
  return -1 != str.indexOf(subString);
};
goog.string.internal.caseInsensitiveContains = function(str, subString) {
  return goog.string.internal.contains(str.toLowerCase(), subString.toLowerCase());
};
goog.string.internal.compareVersions = function(version1, version2) {
  for (var order = 0, v1Subs = goog.string.internal.trim(String(version1)).split("."), v2Subs = goog.string.internal.trim(String(version2)).split("."), subCount = Math.max(v1Subs.length, v2Subs.length), subIdx = 0; 0 == order && subIdx < subCount; subIdx++) {
    var v1Sub = v1Subs[subIdx] || "", v2Sub = v2Subs[subIdx] || "";
    do {
      var v1Comp = /(\d*)(\D*)(.*)/.exec(v1Sub) || ["", "", "", ""], v2Comp = /(\d*)(\D*)(.*)/.exec(v2Sub) || ["", "", "", ""];
      if (0 == v1Comp[0].length && 0 == v2Comp[0].length) {
        break;
      }
      order = goog.string.internal.compareElements_(0 == v1Comp[1].length ? 0 : parseInt(v1Comp[1], 10), 0 == v2Comp[1].length ? 0 : parseInt(v2Comp[1], 10)) || goog.string.internal.compareElements_(0 == v1Comp[2].length, 0 == v2Comp[2].length) || goog.string.internal.compareElements_(v1Comp[2], v2Comp[2]);
      v1Sub = v1Comp[3];
      v2Sub = v2Comp[3];
    } while (0 == order);
  }
  return order;
};
goog.string.internal.compareElements_ = function(left, right) {
  return left < right ? -1 : left > right ? 1 : 0;
};
/*

 SPDX-License-Identifier: Apache-2.0
*/
var module$contents$safevalues$environment$dev_module = module$contents$safevalues$environment$dev_module || {id:"third_party/javascript/safevalues/environment/dev.closure.js"};
var module$contents$safevalues$internals$pure_module = module$contents$safevalues$internals$pure_module || {id:"third_party/javascript/safevalues/internals/pure.closure.js"};
function module$contents$safevalues$internals$pure_pure(valueOf) {
  return {valueOf:valueOf}.valueOf();
}
;goog.debug = {};
function module$contents$goog$debug$Error_DebugError(msg, cause) {
  if (Error.captureStackTrace) {
    Error.captureStackTrace(this, module$contents$goog$debug$Error_DebugError);
  } else {
    var stack = Error().stack;
    stack && (this.stack = stack);
  }
  msg && (this.message = String(msg));
  void 0 !== cause && (this.cause = cause);
  this.reportErrorToServer = !0;
}
goog.inherits(module$contents$goog$debug$Error_DebugError, Error);
module$contents$goog$debug$Error_DebugError.prototype.name = "CustomError";
goog.debug.Error = module$contents$goog$debug$Error_DebugError;
goog.dom = {};
goog.dom.NodeType = {ELEMENT:1, ATTRIBUTE:2, TEXT:3, CDATA_SECTION:4, ENTITY_REFERENCE:5, ENTITY:6, PROCESSING_INSTRUCTION:7, COMMENT:8, DOCUMENT:9, DOCUMENT_TYPE:10, DOCUMENT_FRAGMENT:11, NOTATION:12};
goog.asserts = {};
goog.asserts.ENABLE_ASSERTS = goog.DEBUG;
function module$contents$goog$asserts_AssertionError(messagePattern, messageArgs) {
  module$contents$goog$debug$Error_DebugError.call(this, module$contents$goog$asserts_subs(messagePattern, messageArgs));
  this.messagePattern = messagePattern;
}
goog.inherits(module$contents$goog$asserts_AssertionError, module$contents$goog$debug$Error_DebugError);
goog.asserts.AssertionError = module$contents$goog$asserts_AssertionError;
module$contents$goog$asserts_AssertionError.prototype.name = "AssertionError";
goog.asserts.DEFAULT_ERROR_HANDLER = function(e) {
  throw e;
};
var module$contents$goog$asserts_errorHandler_ = goog.asserts.DEFAULT_ERROR_HANDLER;
function module$contents$goog$asserts_subs(pattern, subs) {
  for (var splitParts = pattern.split("%s"), returnString = "", subLast = splitParts.length - 1, i = 0; i < subLast; i++) {
    returnString += splitParts[i] + (i < subs.length ? subs[i] : "%s");
  }
  return returnString + splitParts[subLast];
}
function module$contents$goog$asserts_doAssertFailure(defaultMessage, defaultArgs, givenMessage, givenArgs) {
  var message = "Assertion failed";
  if (givenMessage) {
    message += ": " + givenMessage;
    var args = givenArgs;
  } else {
    defaultMessage && (message += ": " + defaultMessage, args = defaultArgs);
  }
  var e = new module$contents$goog$asserts_AssertionError("" + message, args || []);
  module$contents$goog$asserts_errorHandler_(e);
}
goog.asserts.setErrorHandler = function(errorHandler) {
  goog.asserts.ENABLE_ASSERTS && (module$contents$goog$asserts_errorHandler_ = errorHandler);
};
goog.asserts.assert = function(condition, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && !condition && module$contents$goog$asserts_doAssertFailure("", null, opt_message, Array.prototype.slice.call(arguments, 2));
  return condition;
};
goog.asserts.assertExists = function(value, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && null == value && module$contents$goog$asserts_doAssertFailure("Expected to exist: %s.", [value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.fail = function(opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError("Failure" + (opt_message ? ": " + opt_message : ""), Array.prototype.slice.call(arguments, 1)));
};
goog.asserts.assertNumber = function(value, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && "number" !== typeof value && module$contents$goog$asserts_doAssertFailure("Expected number but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.assertString = function(value, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && "string" !== typeof value && module$contents$goog$asserts_doAssertFailure("Expected string but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.assertFunction = function(value, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && "function" !== typeof value && module$contents$goog$asserts_doAssertFailure("Expected function but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.assertObject = function(value, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && !goog.isObject(value) && module$contents$goog$asserts_doAssertFailure("Expected object but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.assertArray = function(value, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && !Array.isArray(value) && module$contents$goog$asserts_doAssertFailure("Expected array but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.assertBoolean = function(value, opt_message, var_args) {
  goog.asserts.ENABLE_ASSERTS && "boolean" !== typeof value && module$contents$goog$asserts_doAssertFailure("Expected boolean but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.assertElement = function(value, opt_message, var_args) {
  !goog.asserts.ENABLE_ASSERTS || goog.isObject(value) && value.nodeType == goog.dom.NodeType.ELEMENT || module$contents$goog$asserts_doAssertFailure("Expected Element but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
goog.asserts.assertInstanceof = function(value, type, opt_message, var_args) {
  !goog.asserts.ENABLE_ASSERTS || value instanceof type || module$contents$goog$asserts_doAssertFailure("Expected instanceof %s but got %s.", [module$contents$goog$asserts_getType(type), module$contents$goog$asserts_getType(value)], opt_message, Array.prototype.slice.call(arguments, 3));
  return value;
};
goog.asserts.assertFinite = function(value, opt_message, var_args) {
  !goog.asserts.ENABLE_ASSERTS || "number" == typeof value && isFinite(value) || module$contents$goog$asserts_doAssertFailure("Expected %s to be a finite number but it is not.", [value], opt_message, Array.prototype.slice.call(arguments, 2));
  return value;
};
function module$contents$goog$asserts_getType(value) {
  return value instanceof Function ? value.displayName || value.name || "unknown type name" : value instanceof Object ? value.constructor.displayName || value.constructor.name || Object.prototype.toString.call(value) : null === value ? "null" : typeof value;
}
;goog.html = {};
goog.html.trustedtypes = {};
goog.html.trustedtypes.POLICY_NAME = goog.TRUSTED_TYPES_POLICY_NAME ? goog.TRUSTED_TYPES_POLICY_NAME + "#html" : "";
goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse = function() {
  if (!goog.html.trustedtypes.POLICY_NAME) {
    return null;
  }
  void 0 === goog.html.trustedtypes.cachedPolicy_ && (goog.html.trustedtypes.cachedPolicy_ = goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));
  return goog.html.trustedtypes.cachedPolicy_;
};
goog.string.Const = function(opt_token, opt_content) {
  this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = opt_token === goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ && opt_content || "";
  this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ = goog.string.Const.TYPE_MARKER_;
};
goog.string.Const.prototype.toString = function() {
  return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
};
goog.string.Const.unwrap = function(stringConst) {
  if (stringConst instanceof goog.string.Const && stringConst.constructor === goog.string.Const && stringConst.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ === goog.string.Const.TYPE_MARKER_) {
    return stringConst.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
  }
  goog.asserts.fail("expected object of type Const, got '" + stringConst + "'");
  return "type_error:Const";
};
goog.string.Const.from = function(s) {
  return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_, s);
};
goog.string.Const.TYPE_MARKER_ = {};
goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ = {};
goog.string.Const.EMPTY = goog.string.Const.from("");
goog.html.TrustedResourceUrl = function(value, token) {
  if (goog.DEBUG && token !== goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_) {
    throw Error("TrustedResourceUrl is not meant to be built directly");
  }
  this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = value;
};
goog.html.TrustedResourceUrl.prototype.toString = function() {
  return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + "";
};
goog.html.TrustedResourceUrl.prototype.cloneWithParams = function(searchParams, opt_hashParams) {
  var url = goog.html.TrustedResourceUrl.unwrap(this), parts = goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(url), urlHash = parts[3] || "";
  return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(parts[1] + goog.html.TrustedResourceUrl.stringifyParams_("?", parts[2] || "", searchParams) + goog.html.TrustedResourceUrl.stringifyParams_("#", urlHash, opt_hashParams));
};
goog.html.TrustedResourceUrl.unwrap = function(trustedResourceUrl) {
  return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(trustedResourceUrl).toString();
};
goog.html.TrustedResourceUrl.unwrapTrustedScriptURL = function(trustedResourceUrl) {
  if (trustedResourceUrl instanceof goog.html.TrustedResourceUrl && trustedResourceUrl.constructor === goog.html.TrustedResourceUrl) {
    return trustedResourceUrl.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
  }
  goog.asserts.fail("expected object of type TrustedResourceUrl, got '%s' of type %s", trustedResourceUrl, goog.typeOf(trustedResourceUrl));
  return "type_error:TrustedResourceUrl";
};
goog.html.TrustedResourceUrl.format = function(format, args) {
  var formatStr = goog.string.Const.unwrap(format);
  if (!goog.html.TrustedResourceUrl.BASE_URL_.test(formatStr)) {
    throw Error("Invalid TrustedResourceUrl format: " + formatStr);
  }
  var result = formatStr.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_, function(match, id) {
    if (!Object.prototype.hasOwnProperty.call(args, id)) {
      throw Error('Found marker, "' + id + '", in format string, "' + formatStr + '", but no valid label mapping found in args: ' + JSON.stringify(args));
    }
    var arg = args[id];
    return arg instanceof goog.string.Const ? goog.string.Const.unwrap(arg) : encodeURIComponent(String(arg));
  });
  return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(result);
};
goog.html.TrustedResourceUrl.FORMAT_MARKER_ = /%{(\w+)}/g;
goog.html.TrustedResourceUrl.BASE_URL_ = RegExp("^((https:)?//[0-9a-z.:[\\]-]+/|/[^/\\\\]|[^:/\\\\%]+/|[^:/\\\\%]*[?#]|about:blank#)", "i");
goog.html.TrustedResourceUrl.URL_PARAM_PARSER_ = /^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
goog.html.TrustedResourceUrl.formatWithParams = function(format, args, searchParams, opt_hashParams) {
  return goog.html.TrustedResourceUrl.format(format, args).cloneWithParams(searchParams, opt_hashParams);
};
goog.html.TrustedResourceUrl.fromConstant = function(url) {
  return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(url));
};
goog.html.TrustedResourceUrl.fromConstants = function(parts) {
  for (var unwrapped = "", i = 0; i < parts.length; i++) {
    unwrapped += goog.string.Const.unwrap(parts[i]);
  }
  return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(unwrapped);
};
goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};
goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function(url) {
  var noinlineUrl = url, policy = goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse(), value = policy ? policy.createScriptURL(noinlineUrl) : noinlineUrl;
  return new goog.html.TrustedResourceUrl(value, goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_);
};
goog.html.TrustedResourceUrl.stringifyParams_ = function(prefix, currentString, params) {
  if (null == params) {
    return currentString;
  }
  if ("string" === typeof params) {
    return params ? prefix + encodeURIComponent(params) : "";
  }
  for (var key in params) {
    if (Object.prototype.hasOwnProperty.call(params, key)) {
      for (var value = params[key], outputValues = Array.isArray(value) ? value : [value], i = 0; i < outputValues.length; i++) {
        var outputValue = outputValues[i];
        null != outputValue && (currentString || (currentString = prefix), currentString += (currentString.length > prefix.length ? "&" : "") + encodeURIComponent(key) + "=" + encodeURIComponent(String(outputValue)));
      }
    }
  }
  return currentString;
};
var module$exports$safevalues$internals$resource_url_impl = {}, module$contents$safevalues$internals$resource_url_impl_module = module$contents$safevalues$internals$resource_url_impl_module || {id:"third_party/javascript/safevalues/internals/resource_url_impl.closure.js"};
module$exports$safevalues$internals$resource_url_impl.TrustedResourceUrl = goog.html.TrustedResourceUrl;
function module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(url) {
  return (0,goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse)(url);
}
module$exports$safevalues$internals$resource_url_impl.createResourceUrlInternal = module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal;
function module$contents$safevalues$internals$resource_url_impl_isResourceUrl(value) {
  return value instanceof goog.html.TrustedResourceUrl;
}
module$exports$safevalues$internals$resource_url_impl.isResourceUrl = module$contents$safevalues$internals$resource_url_impl_isResourceUrl;
function module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(value) {
  return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(value);
}
module$exports$safevalues$internals$resource_url_impl.unwrapResourceUrl = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl;
var $jscomp$templatelit$m425881384$5 = $jscomp.createTemplateTagFirstArg([""]), $jscomp$templatelit$m425881384$6 = $jscomp.createTemplateTagFirstArgWithRaw(["\x00"], ["\\0"]), $jscomp$templatelit$m425881384$7 = $jscomp.createTemplateTagFirstArgWithRaw(["\n"], ["\\n"]), $jscomp$templatelit$m425881384$8 = $jscomp.createTemplateTagFirstArgWithRaw(["\x00"], ["\\u0000"]), $jscomp$templatelit$m425881384$9 = $jscomp.createTemplateTagFirstArg([""]), $jscomp$templatelit$m425881384$10 = $jscomp.createTemplateTagFirstArgWithRaw(["\x00"], 
["\\0"]), $jscomp$templatelit$m425881384$11 = $jscomp.createTemplateTagFirstArgWithRaw(["\n"], ["\\n"]), $jscomp$templatelit$m425881384$12 = $jscomp.createTemplateTagFirstArgWithRaw(["\x00"], ["\\u0000"]), module$contents$safevalues$internals$string_literal_module = module$contents$safevalues$internals$string_literal_module || {id:"third_party/javascript/safevalues/internals/string_literal.closure.js"};
function module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, numExprs) {
  if (!module$contents$safevalues$internals$string_literal_isTemplateObject(templateObj) || numExprs + 1 !== templateObj.length) {
    throw new TypeError("\n    ############################## ERROR ##############################\n\n    It looks like you are trying to call a template tag function (fn`...`)\n    using the normal function syntax (fn(...)), which is not supported.\n\n    The functions in the safevalues library are not designed to be called\n    like normal functions, and doing so invalidates the security guarantees\n    that safevalues provides.\n\n    If you are stuck and not sure how to proceed, please reach out to us\n    instead through:\n     - go/ise-hardening-yaqs (preferred) // LINE-INTERNAL\n     - g/ise-hardening // LINE-INTERNAL\n     - https://github.com/google/safevalues/issues\n\n    ############################## ERROR ##############################");
  }
}
function module$contents$safevalues$internals$string_literal_checkFrozen(templateObj) {
  return Object.isFrozen(templateObj) && Object.isFrozen(templateObj.raw);
}
var module$contents$safevalues$internals$string_literal_TagFn;
function module$contents$safevalues$internals$string_literal_checkTranspiled(fn) {
  return -1 === fn.toString().indexOf("`");
}
var module$contents$safevalues$internals$string_literal_isTranspiled = module$contents$safevalues$internals$string_literal_checkTranspiled(function(tag) {
  return tag($jscomp$templatelit$m425881384$5);
}) || module$contents$safevalues$internals$string_literal_checkTranspiled(function(tag) {
  return tag($jscomp$templatelit$m425881384$6);
}) || module$contents$safevalues$internals$string_literal_checkTranspiled(function(tag) {
  return tag($jscomp$templatelit$m425881384$7);
}) || module$contents$safevalues$internals$string_literal_checkTranspiled(function(tag) {
  return tag($jscomp$templatelit$m425881384$8);
}), module$contents$safevalues$internals$string_literal_frozenTSA = module$contents$safevalues$internals$string_literal_checkFrozen($jscomp$templatelit$m425881384$9) && module$contents$safevalues$internals$string_literal_checkFrozen($jscomp$templatelit$m425881384$10) && module$contents$safevalues$internals$string_literal_checkFrozen($jscomp$templatelit$m425881384$11) && module$contents$safevalues$internals$string_literal_checkFrozen($jscomp$templatelit$m425881384$12);
function module$contents$safevalues$internals$string_literal_isTemplateObject(templateObj) {
  return Array.isArray(templateObj) && Array.isArray(templateObj.raw) && templateObj.length === templateObj.raw.length && (module$contents$safevalues$internals$string_literal_isTranspiled || templateObj !== templateObj.raw) && (module$contents$safevalues$internals$string_literal_isTranspiled && !module$contents$safevalues$internals$string_literal_frozenTSA || module$contents$safevalues$internals$string_literal_checkFrozen(templateObj)) ? 
  !0 : !1;
}
;var module$exports$safevalues$internals$secrets = {}, module$contents$safevalues$internals$secrets_module = module$contents$safevalues$internals$secrets_module || {id:"third_party/javascript/safevalues/internals/secrets.closure.js"};
module$exports$safevalues$internals$secrets.secretToken = {};
function module$contents$safevalues$internals$secrets_ensureTokenIsValid(token) {
  if (goog.DEBUG && token !== module$exports$safevalues$internals$secrets.secretToken) {
    throw Error("Bad secret");
  }
}
module$exports$safevalues$internals$secrets.ensureTokenIsValid = module$contents$safevalues$internals$secrets_ensureTokenIsValid;
var module$exports$safevalues$internals$url_impl = {}, module$contents$safevalues$internals$url_impl_module = module$contents$safevalues$internals$url_impl_module || {id:"third_party/javascript/safevalues/internals/url_impl.closure.js"};
module$exports$safevalues$internals$url_impl.SafeUrl = function(token, value) {
  goog.DEBUG && module$contents$safevalues$internals$secrets_ensureTokenIsValid(token);
  this.privateDoNotAccessOrElseWrappedUrl = value;
};
module$exports$safevalues$internals$url_impl.SafeUrl.prototype.toString = function() {
  return this.privateDoNotAccessOrElseWrappedUrl;
};
var module$contents$safevalues$internals$url_impl_UrlImpl = module$exports$safevalues$internals$url_impl.SafeUrl;
function module$contents$safevalues$internals$url_impl_createUrlInternal(value) {
  return new module$exports$safevalues$internals$url_impl.SafeUrl(module$exports$safevalues$internals$secrets.secretToken, value);
}
module$exports$safevalues$internals$url_impl.createUrlInternal = module$contents$safevalues$internals$url_impl_createUrlInternal;
module$exports$safevalues$internals$url_impl.ABOUT_BLANK = module$contents$safevalues$internals$url_impl_createUrlInternal("about:blank");
module$exports$safevalues$internals$url_impl.INNOCUOUS_URL = module$contents$safevalues$internals$url_impl_createUrlInternal("about:invalid#zClosurez");
function module$contents$safevalues$internals$url_impl_isUrl(value) {
  return value instanceof module$exports$safevalues$internals$url_impl.SafeUrl;
}
module$exports$safevalues$internals$url_impl.isUrl = module$contents$safevalues$internals$url_impl_isUrl;
function module$contents$safevalues$internals$url_impl_unwrapUrl(value) {
  if (module$contents$safevalues$internals$url_impl_isUrl(value)) {
    return value.privateDoNotAccessOrElseWrappedUrl;
  }
  var message = "";
  goog.DEBUG && (message = "Unexpected type when unwrapping SafeUrl, got '" + value + "' of type '" + typeof value + "'");
  throw Error(message);
}
module$exports$safevalues$internals$url_impl.unwrapUrl = module$contents$safevalues$internals$url_impl_unwrapUrl;
var module$exports$safevalues$builders$url_builders = {}, module$contents$safevalues$builders$url_builders_module = module$contents$safevalues$builders$url_builders_module || {id:"third_party/javascript/safevalues/builders/url_builders.closure.js"};
function module$contents$safevalues$builders$url_builders_isSafeMimeType(mimeType) {
  var match = mimeType.match(/^([^;]+)(?:;\w+=(?:\w+|"[\w;,= ]+"))*$/i);
  return 2 === (null == match ? void 0 : match.length) && (module$contents$safevalues$builders$url_builders_isSafeImageMimeType(match[1]) || module$contents$safevalues$builders$url_builders_isSafeVideoMimeType(match[1]) || module$contents$safevalues$builders$url_builders_isSafeAudioMimeType(match[1]) || module$contents$safevalues$builders$url_builders_isSafeFontMimeType(match[1]));
}
function module$contents$safevalues$builders$url_builders_isSafeImageMimeType(mimeType) {
  return /^image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif|avif|x-ms-bmp)$/i.test(mimeType);
}
function module$contents$safevalues$builders$url_builders_isSafeVideoMimeType(mimeType) {
  return /^video\/(?:mpeg|mp4|ogg|webm|x-matroska|quicktime|x-ms-wmv)$/i.test(mimeType);
}
function module$contents$safevalues$builders$url_builders_isSafeAudioMimeType(mimeType) {
  return /^audio\/(?:3gpp2|3gpp|aac|amr|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)$/i.test(mimeType);
}
function module$contents$safevalues$builders$url_builders_isSafeFontMimeType(mimeType) {
  return /^font\/\w+/i.test(mimeType);
}
module$exports$safevalues$builders$url_builders.Scheme = function() {
};
var module$contents$safevalues$builders$url_builders_SchemeImpl = function(isValid) {
  this.isValid = isValid;
};
function module$contents$safevalues$builders$url_builders_isValidScheme(scheme) {
  return scheme instanceof module$contents$safevalues$builders$url_builders_SchemeImpl;
}
function module$contents$safevalues$builders$url_builders_simpleScheme(scheme) {
  return new module$contents$safevalues$builders$url_builders_SchemeImpl(function(url) {
    return url.substr(0, scheme.length + 1).toLowerCase() === scheme + ":";
  });
}
module$exports$safevalues$builders$url_builders.SanitizableUrlScheme = {TEL:module$contents$safevalues$builders$url_builders_simpleScheme("tel"), CALLTO:new module$contents$safevalues$builders$url_builders_SchemeImpl(function(url) {
  return /^callto:\+?\d*$/i.test(url);
}), SSH:new module$contents$safevalues$builders$url_builders_SchemeImpl(function(url) {
  return 0 === url.indexOf("ssh://");
}), RTSP:module$contents$safevalues$builders$url_builders_simpleScheme("rtsp"), DATA:module$contents$safevalues$builders$url_builders_simpleScheme("data"), HTTP:module$contents$safevalues$builders$url_builders_simpleScheme("http"), HTTPS:module$contents$safevalues$builders$url_builders_simpleScheme("https"), EXTENSION:new module$contents$safevalues$builders$url_builders_SchemeImpl(function(url) {
  return 0 === url.indexOf("chrome-extension://") || 0 === url.indexOf("moz-extension://") || 0 === url.indexOf("ms-browser-extension://");
}), FTP:module$contents$safevalues$builders$url_builders_simpleScheme("ftp"), RELATIVE:new module$contents$safevalues$builders$url_builders_SchemeImpl(function(url) {
  return /^[^:]*([/?#]|$)/.test(url);
}), MAILTO:module$contents$safevalues$builders$url_builders_simpleScheme("mailto"), INTENT:module$contents$safevalues$builders$url_builders_simpleScheme("intent"), MARKET:module$contents$safevalues$builders$url_builders_simpleScheme("market"), ITMS:module$contents$safevalues$builders$url_builders_simpleScheme("itms"), ITMS_APPSS:module$contents$safevalues$builders$url_builders_simpleScheme("itms-appss"), 
ITMS_SERVICES:module$contents$safevalues$builders$url_builders_simpleScheme("itms-services"), FACEBOOK_MESSENGER:module$contents$safevalues$builders$url_builders_simpleScheme("fb-messenger"), WHATSAPP:module$contents$safevalues$builders$url_builders_simpleScheme("whatsapp"), SIP:new module$contents$safevalues$builders$url_builders_SchemeImpl(function(url) {
  return 0 === url.indexOf("sip:") || 0 === url.indexOf("sips:");
}), SMS:module$contents$safevalues$builders$url_builders_simpleScheme("sms"), VND_YOUTUBE:module$contents$safevalues$builders$url_builders_simpleScheme("vnd.youtube")};
var module$contents$safevalues$builders$url_builders_DEFAULT_SCHEMES = [module$exports$safevalues$builders$url_builders.SanitizableUrlScheme.DATA, module$exports$safevalues$builders$url_builders.SanitizableUrlScheme.HTTP, module$exports$safevalues$builders$url_builders.SanitizableUrlScheme.HTTPS, module$exports$safevalues$builders$url_builders.SanitizableUrlScheme.MAILTO, 
module$exports$safevalues$builders$url_builders.SanitizableUrlScheme.FTP, module$exports$safevalues$builders$url_builders.SanitizableUrlScheme.RELATIVE];
function module$contents$safevalues$builders$url_builders_trySanitizeUrl(url, allowedSchemes) {
  allowedSchemes = void 0 === allowedSchemes ? module$contents$safevalues$builders$url_builders_DEFAULT_SCHEMES : allowedSchemes;
  if (module$contents$safevalues$internals$url_impl_isUrl(url)) {
    return url;
  }
  for (var i = 0; i < allowedSchemes.length; ++i) {
    var scheme = allowedSchemes[i];
    if (module$contents$safevalues$builders$url_builders_isValidScheme(scheme) && scheme.isValid(url)) {
      return module$contents$safevalues$internals$url_impl_createUrlInternal(url);
    }
  }
}
module$exports$safevalues$builders$url_builders.trySanitizeUrl = module$contents$safevalues$builders$url_builders_trySanitizeUrl;
function module$contents$safevalues$builders$url_builders_sanitizeUrl(url, allowedSchemes) {
  allowedSchemes = void 0 === allowedSchemes ? module$contents$safevalues$builders$url_builders_DEFAULT_SCHEMES : allowedSchemes;
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_trySanitizeUrl(url, allowedSchemes);
  void 0 === sanitizedUrl && module$contents$safevalues$builders$url_builders_triggerCallbacks(url.toString());
  return sanitizedUrl || module$exports$safevalues$internals$url_impl.INNOCUOUS_URL;
}
module$exports$safevalues$builders$url_builders.sanitizeUrl = module$contents$safevalues$builders$url_builders_sanitizeUrl;
function module$contents$safevalues$builders$url_builders_objectUrlFromSafeSource(source) {
  if ("undefined" !== typeof MediaSource && source instanceof MediaSource) {
    return module$contents$safevalues$internals$url_impl_createUrlInternal(URL.createObjectURL(source));
  }
  if (!module$contents$safevalues$builders$url_builders_isSafeMimeType(source.type)) {
    var message = "";
    goog.DEBUG && (message = "unsafe blob MIME type: " + source.type);
    throw Error(message);
  }
  return module$contents$safevalues$internals$url_impl_createUrlInternal(URL.createObjectURL(source));
}
module$exports$safevalues$builders$url_builders.objectUrlFromSafeSource = module$contents$safevalues$builders$url_builders_objectUrlFromSafeSource;
function module$contents$safevalues$builders$url_builders_fromMediaSource(media) {
  if ("undefined" !== typeof MediaSource && media instanceof MediaSource) {
    return module$contents$safevalues$internals$url_impl_createUrlInternal(URL.createObjectURL(media));
  }
  var message = "";
  goog.DEBUG && (message = "fromMediaSource only accepts MediaSource instances, but was called with " + media + ".");
  throw Error(message);
}
module$exports$safevalues$builders$url_builders.fromMediaSource = module$contents$safevalues$builders$url_builders_fromMediaSource;
function module$contents$safevalues$builders$url_builders_fromTrustedResourceUrl(url) {
  return module$contents$safevalues$internals$url_impl_createUrlInternal(module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(url).toString());
}
module$exports$safevalues$builders$url_builders.fromTrustedResourceUrl = module$contents$safevalues$builders$url_builders_fromTrustedResourceUrl;
function module$contents$safevalues$builders$url_builders_isSafeUrlPrefix(prefix, isWholeUrl) {
  var markerIdx = prefix.search(/[:/?#]/);
  if (0 > markerIdx) {
    return isWholeUrl;
  }
  if (":" !== prefix.charAt(markerIdx)) {
    return !0;
  }
  var scheme = prefix.substring(0, markerIdx).toLowerCase();
  return /^[a-z][a-z\d+.-]*$/.test(scheme) && "javascript" !== scheme;
}
function module$contents$safevalues$builders$url_builders_safeUrl(templateObj) {
  var rest = $jscomp.getRestArguments.apply(1, arguments);
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, rest.length);
  var prefix = templateObj[0];
  if (goog.DEBUG && !module$contents$safevalues$builders$url_builders_isSafeUrlPrefix(prefix, 0 === rest.length)) {
    throw Error("Trying to interpolate with unsupported prefix: " + prefix);
  }
  for (var urlParts = [prefix], i = 0; i < rest.length; i++) {
    urlParts.push(String(rest[i])), urlParts.push(templateObj[i + 1]);
  }
  return module$contents$safevalues$internals$url_impl_createUrlInternal(urlParts.join(""));
}
module$exports$safevalues$builders$url_builders.safeUrl = module$contents$safevalues$builders$url_builders_safeUrl;
var module$contents$safevalues$builders$url_builders_ASSUME_IMPLEMENTS_URL_API = 2020 <= goog.FEATURESET_YEAR, module$contents$safevalues$builders$url_builders_supportsURLAPI = module$contents$safevalues$internals$pure_pure(function() {
  return module$contents$safevalues$builders$url_builders_ASSUME_IMPLEMENTS_URL_API ? !0 : "function" === typeof URL;
});
function module$contents$safevalues$builders$url_builders_legacyExtractScheme(url) {
  var aTag = document.createElement("a");
  try {
    aTag.href = url;
  } catch (e) {
    return;
  }
  var protocol = aTag.protocol;
  return ":" === protocol || "" === protocol ? "https:" : protocol;
}
var module$contents$safevalues$builders$url_builders_JavaScriptUrlSanitizationCallback;
function module$contents$safevalues$builders$url_builders_extractScheme(url) {
  if (!module$contents$safevalues$builders$url_builders_supportsURLAPI) {
    return module$contents$safevalues$builders$url_builders_legacyExtractScheme(url);
  }
  try {
    var parsedUrl = new URL(url);
  } catch (e) {
    return "https:";
  }
  return parsedUrl.protocol;
}
module$exports$safevalues$builders$url_builders.extractScheme = module$contents$safevalues$builders$url_builders_extractScheme;
var module$contents$safevalues$builders$url_builders_ALLOWED_SCHEMES = ["data:", "http:", "https:", "mailto:", "ftp:"];
module$exports$safevalues$builders$url_builders.IS_NOT_JAVASCRIPT_URL_PATTERN = /^\s*(?!javascript:)(?:[\w+.-]+:|[^:/?#]*(?:[/?#]|$))/i;
function module$contents$safevalues$builders$url_builders_reportJavaScriptUrl(url) {
  var hasJavascriptUrlScheme = !module$exports$safevalues$builders$url_builders.IS_NOT_JAVASCRIPT_URL_PATTERN.test(url);
  hasJavascriptUrlScheme && module$contents$safevalues$builders$url_builders_triggerCallbacks(url);
  return hasJavascriptUrlScheme;
}
module$exports$safevalues$builders$url_builders.reportJavaScriptUrl = module$contents$safevalues$builders$url_builders_reportJavaScriptUrl;
function module$contents$safevalues$builders$url_builders_sanitizeJavaScriptUrl(url) {
  if (!module$contents$safevalues$builders$url_builders_reportJavaScriptUrl(url)) {
    return url;
  }
}
module$exports$safevalues$builders$url_builders.sanitizeJavaScriptUrl = module$contents$safevalues$builders$url_builders_sanitizeJavaScriptUrl;
function module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url) {
  return url instanceof module$exports$safevalues$internals$url_impl.SafeUrl ? module$contents$safevalues$internals$url_impl_unwrapUrl(url) : module$contents$safevalues$builders$url_builders_sanitizeJavaScriptUrl(url);
}
module$exports$safevalues$builders$url_builders.unwrapUrlOrSanitize = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize;
function module$contents$safevalues$builders$url_builders_restrictivelySanitizeUrl(url) {
  var parsedScheme = module$contents$safevalues$builders$url_builders_extractScheme(url);
  return void 0 !== parsedScheme && -1 !== module$contents$safevalues$builders$url_builders_ALLOWED_SCHEMES.indexOf(parsedScheme.toLowerCase()) ? url : "about:invalid#zClosurez";
}
module$exports$safevalues$builders$url_builders.restrictivelySanitizeUrl = module$contents$safevalues$builders$url_builders_restrictivelySanitizeUrl;
var module$contents$safevalues$builders$url_builders_sanitizationCallbacks = [], module$contents$safevalues$builders$url_builders_triggerCallbacks = function(url) {
};
goog.DEBUG && module$contents$safevalues$builders$url_builders_addJavaScriptUrlSanitizationCallback(function(url) {
  console.warn("A URL with content '" + url + "' was sanitized away.");
});
function module$contents$safevalues$builders$url_builders_addJavaScriptUrlSanitizationCallback(callback) {
  -1 === module$contents$safevalues$builders$url_builders_sanitizationCallbacks.indexOf(callback) && module$contents$safevalues$builders$url_builders_sanitizationCallbacks.push(callback);
  module$contents$safevalues$builders$url_builders_triggerCallbacks = function(url) {
    module$contents$safevalues$builders$url_builders_sanitizationCallbacks.forEach(function(callback) {
      callback(url);
    });
  };
}
module$exports$safevalues$builders$url_builders.addJavaScriptUrlSanitizationCallback = module$contents$safevalues$builders$url_builders_addJavaScriptUrlSanitizationCallback;
function module$contents$safevalues$builders$url_builders_removeJavaScriptUrlSanitizationCallback(callback) {
  var callbackIndex = module$contents$safevalues$builders$url_builders_sanitizationCallbacks.indexOf(callback);
  -1 !== callbackIndex && module$contents$safevalues$builders$url_builders_sanitizationCallbacks.splice(callbackIndex, 1);
}
module$exports$safevalues$builders$url_builders.removeJavaScriptUrlSanitizationCallback = module$contents$safevalues$builders$url_builders_removeJavaScriptUrlSanitizationCallback;
var module$exports$safevalues$dom$elements$anchor = {}, module$contents$safevalues$dom$elements$anchor_module = module$contents$safevalues$dom$elements$anchor_module || {id:"third_party/javascript/safevalues/dom/elements/anchor.closure.js"};
module$exports$safevalues$dom$elements$anchor.setHref = function(anchor, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && (anchor.href = sanitizedUrl);
};
module$exports$safevalues$dom$elements$anchor.setHrefLite = function(anchor, url) {
  module$contents$safevalues$builders$url_builders_reportJavaScriptUrl(url) || (anchor.href = url);
};
var module$exports$safevalues$dom$elements$area = {}, module$contents$safevalues$dom$elements$area_module = module$contents$safevalues$dom$elements$area_module || {id:"third_party/javascript/safevalues/dom/elements/area.closure.js"};
module$exports$safevalues$dom$elements$area.setHref = function(area, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && (area.href = sanitizedUrl);
};
var module$exports$safevalues$dom$elements$base = {}, module$contents$safevalues$dom$elements$base_module = module$contents$safevalues$dom$elements$base_module || {id:"third_party/javascript/safevalues/dom/elements/base.closure.js"};
module$exports$safevalues$dom$elements$base.setHref = function(baseEl, url) {
  baseEl.href = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(url);
};
var module$exports$safevalues$dom$elements$button = {}, module$contents$safevalues$dom$elements$button_module = module$contents$safevalues$dom$elements$button_module || {id:"third_party/javascript/safevalues/dom/elements/button.closure.js"};
module$exports$safevalues$dom$elements$button.setFormaction = function(button, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && (button.formAction = sanitizedUrl);
};
var module$exports$safevalues$internals$attribute_impl = {}, module$contents$safevalues$internals$attribute_impl_module = module$contents$safevalues$internals$attribute_impl_module || {id:"third_party/javascript/safevalues/internals/attribute_impl.closure.js"};
module$exports$safevalues$internals$attribute_impl.SafeAttributePrefix = function(token, value) {
  goog.DEBUG && module$contents$safevalues$internals$secrets_ensureTokenIsValid(token);
  this.privateDoNotAccessOrElseWrappedAttributePrefix = value;
};
module$exports$safevalues$internals$attribute_impl.SafeAttributePrefix.prototype.toString = function() {
  return this.privateDoNotAccessOrElseWrappedAttributePrefix;
};
var module$contents$safevalues$internals$attribute_impl_AttributePrefixImpl = module$exports$safevalues$internals$attribute_impl.SafeAttributePrefix;
function module$contents$safevalues$internals$attribute_impl_createAttributePrefixInternal(value) {
  return new module$exports$safevalues$internals$attribute_impl.SafeAttributePrefix(module$exports$safevalues$internals$secrets.secretToken, value);
}
module$exports$safevalues$internals$attribute_impl.createAttributePrefixInternal = module$contents$safevalues$internals$attribute_impl_createAttributePrefixInternal;
function module$contents$safevalues$internals$attribute_impl_isAttributePrefix(value) {
  return value instanceof module$exports$safevalues$internals$attribute_impl.SafeAttributePrefix;
}
module$exports$safevalues$internals$attribute_impl.isAttributePrefix = module$contents$safevalues$internals$attribute_impl_isAttributePrefix;
function module$contents$safevalues$internals$attribute_impl_unwrapAttributePrefix(value) {
  if (module$contents$safevalues$internals$attribute_impl_isAttributePrefix(value)) {
    return value.privateDoNotAccessOrElseWrappedAttributePrefix;
  }
  var message = "";
  goog.DEBUG && (message = "Unexpected type when unwrapping SafeAttributePrefix, got '" + value + "' of type '" + typeof value + "'");
  throw Error(message);
}
module$exports$safevalues$internals$attribute_impl.unwrapAttributePrefix = module$contents$safevalues$internals$attribute_impl_unwrapAttributePrefix;
goog.array = {};
goog.NATIVE_ARRAY_PROTOTYPES = goog.TRUSTED_SITE;
var module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS = 2012 < goog.FEATURESET_YEAR;
goog.array.ASSUME_NATIVE_FUNCTIONS = module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;
function module$contents$goog$array_peek(array) {
  return array[array.length - 1];
}
goog.array.peek = module$contents$goog$array_peek;
goog.array.last = module$contents$goog$array_peek;
var module$contents$goog$array_indexOf = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.indexOf) ? function(arr, obj, opt_fromIndex) {
  goog.asserts.assert(null != arr.length);
  return Array.prototype.indexOf.call(arr, obj, opt_fromIndex);
} : function(arr, obj, opt_fromIndex) {
  var fromIndex = null == opt_fromIndex ? 0 : 0 > opt_fromIndex ? Math.max(0, arr.length + opt_fromIndex) : opt_fromIndex;
  if ("string" === typeof arr) {
    return "string" !== typeof obj || 1 != obj.length ? -1 : arr.indexOf(obj, fromIndex);
  }
  for (var i = fromIndex; i < arr.length; i++) {
    if (i in arr && arr[i] === obj) {
      return i;
    }
  }
  return -1;
};
goog.array.indexOf = module$contents$goog$array_indexOf;
var module$contents$goog$array_lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.lastIndexOf) ? function(arr, obj, opt_fromIndex) {
  goog.asserts.assert(null != arr.length);
  return Array.prototype.lastIndexOf.call(arr, obj, null == opt_fromIndex ? arr.length - 1 : opt_fromIndex);
} : function(arr, obj, opt_fromIndex) {
  var fromIndex = null == opt_fromIndex ? arr.length - 1 : opt_fromIndex;
  0 > fromIndex && (fromIndex = Math.max(0, arr.length + fromIndex));
  if ("string" === typeof arr) {
    return "string" !== typeof obj || 1 != obj.length ? -1 : arr.lastIndexOf(obj, fromIndex);
  }
  for (var i = fromIndex; 0 <= i; i--) {
    if (i in arr && arr[i] === obj) {
      return i;
    }
  }
  return -1;
};
goog.array.lastIndexOf = module$contents$goog$array_lastIndexOf;
var module$contents$goog$array_forEach = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.forEach) ? function(arr, f, opt_obj) {
  goog.asserts.assert(null != arr.length);
  Array.prototype.forEach.call(arr, f, opt_obj);
} : function(arr, f, opt_obj) {
  for (var l = arr.length, arr2 = "string" === typeof arr ? arr.split("") : arr, i = 0; i < l; i++) {
    i in arr2 && f.call(opt_obj, arr2[i], i, arr);
  }
};
goog.array.forEach = module$contents$goog$array_forEach;
function module$contents$goog$array_forEachRight(arr, f, opt_obj) {
  for (var l = arr.length, arr2 = "string" === typeof arr ? arr.split("") : arr, i = l - 1; 0 <= i; --i) {
    i in arr2 && f.call(opt_obj, arr2[i], i, arr);
  }
}
goog.array.forEachRight = module$contents$goog$array_forEachRight;
var module$contents$goog$array_filter = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.filter) ? function(arr, f, opt_obj) {
  goog.asserts.assert(null != arr.length);
  return Array.prototype.filter.call(arr, f, opt_obj);
} : function(arr, f, opt_obj) {
  for (var l = arr.length, res = [], resLength = 0, arr2 = "string" === typeof arr ? arr.split("") : arr, i = 0; i < l; i++) {
    if (i in arr2) {
      var val = arr2[i];
      f.call(opt_obj, val, i, arr) && (res[resLength++] = val);
    }
  }
  return res;
};
goog.array.filter = module$contents$goog$array_filter;
var module$contents$goog$array_map = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.map) ? function(arr, f, opt_obj) {
  goog.asserts.assert(null != arr.length);
  return Array.prototype.map.call(arr, f, opt_obj);
} : function(arr, f, opt_obj) {
  for (var l = arr.length, res = Array(l), arr2 = "string" === typeof arr ? arr.split("") : arr, i = 0; i < l; i++) {
    i in arr2 && (res[i] = f.call(opt_obj, arr2[i], i, arr));
  }
  return res;
};
goog.array.map = module$contents$goog$array_map;
goog.array.reduce = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduce) ? function(arr, f, val, opt_obj) {
  goog.asserts.assert(null != arr.length);
  opt_obj && (f = goog.bind(f, opt_obj));
  return Array.prototype.reduce.call(arr, f, val);
} : function(arr, f, val, opt_obj) {
  var rval = val;
  module$contents$goog$array_forEach(arr, function(val, index) {
    rval = f.call(opt_obj, rval, val, index, arr);
  });
  return rval;
};
goog.array.reduceRight = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduceRight) ? function(arr, f, val, opt_obj) {
  goog.asserts.assert(null != arr.length);
  goog.asserts.assert(null != f);
  opt_obj && (f = goog.bind(f, opt_obj));
  return Array.prototype.reduceRight.call(arr, f, val);
} : function(arr, f, val, opt_obj) {
  var rval = val;
  module$contents$goog$array_forEachRight(arr, function(val, index) {
    rval = f.call(opt_obj, rval, val, index, arr);
  });
  return rval;
};
var module$contents$goog$array_some = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.some) ? function(arr, f, opt_obj) {
  goog.asserts.assert(null != arr.length);
  return Array.prototype.some.call(arr, f, opt_obj);
} : function(arr, f, opt_obj) {
  for (var l = arr.length, arr2 = "string" === typeof arr ? arr.split("") : arr, i = 0; i < l; i++) {
    if (i in arr2 && f.call(opt_obj, arr2[i], i, arr)) {
      return !0;
    }
  }
  return !1;
};
goog.array.some = module$contents$goog$array_some;
var module$contents$goog$array_every = goog.NATIVE_ARRAY_PROTOTYPES && (module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS || Array.prototype.every) ? function(arr, f, opt_obj) {
  goog.asserts.assert(null != arr.length);
  return Array.prototype.every.call(arr, f, opt_obj);
} : function(arr, f, opt_obj) {
  for (var l = arr.length, arr2 = "string" === typeof arr ? arr.split("") : arr, i = 0; i < l; i++) {
    if (i in arr2 && !f.call(opt_obj, arr2[i], i, arr)) {
      return !1;
    }
  }
  return !0;
};
goog.array.every = module$contents$goog$array_every;
function module$contents$goog$array_count(arr, f, opt_obj) {
  var count = 0;
  module$contents$goog$array_forEach(arr, function(element, index, arr) {
    f.call(opt_obj, element, index, arr) && ++count;
  }, opt_obj);
  return count;
}
goog.array.count = module$contents$goog$array_count;
function module$contents$goog$array_find(arr, f, opt_obj) {
  var i = module$contents$goog$array_findIndex(arr, f, opt_obj);
  return 0 > i ? null : "string" === typeof arr ? arr.charAt(i) : arr[i];
}
goog.array.find = module$contents$goog$array_find;
function module$contents$goog$array_findIndex(arr, f, opt_obj) {
  for (var l = arr.length, arr2 = "string" === typeof arr ? arr.split("") : arr, i = 0; i < l; i++) {
    if (i in arr2 && f.call(opt_obj, arr2[i], i, arr)) {
      return i;
    }
  }
  return -1;
}
goog.array.findIndex = module$contents$goog$array_findIndex;
goog.array.findRight = function(arr, f, opt_obj) {
  var i = module$contents$goog$array_findIndexRight(arr, f, opt_obj);
  return 0 > i ? null : "string" === typeof arr ? arr.charAt(i) : arr[i];
};
function module$contents$goog$array_findIndexRight(arr, f, opt_obj) {
  for (var l = arr.length, arr2 = "string" === typeof arr ? arr.split("") : arr, i = l - 1; 0 <= i; i--) {
    if (i in arr2 && f.call(opt_obj, arr2[i], i, arr)) {
      return i;
    }
  }
  return -1;
}
goog.array.findIndexRight = module$contents$goog$array_findIndexRight;
function module$contents$goog$array_contains(arr, obj) {
  return 0 <= module$contents$goog$array_indexOf(arr, obj);
}
goog.array.contains = module$contents$goog$array_contains;
function module$contents$goog$array_isEmpty(arr) {
  return 0 == arr.length;
}
goog.array.isEmpty = module$contents$goog$array_isEmpty;
function module$contents$goog$array_clear(arr) {
  if (!Array.isArray(arr)) {
    for (var i = arr.length - 1; 0 <= i; i--) {
      delete arr[i];
    }
  }
  arr.length = 0;
}
goog.array.clear = module$contents$goog$array_clear;
goog.array.insert = function(arr, obj) {
  module$contents$goog$array_contains(arr, obj) || arr.push(obj);
};
function module$contents$goog$array_insertAt(arr, obj, opt_i) {
  module$contents$goog$array_splice(arr, opt_i, 0, obj);
}
goog.array.insertAt = module$contents$goog$array_insertAt;
goog.array.insertArrayAt = function(arr, elementsToAdd, opt_i) {
  goog.partial(module$contents$goog$array_splice, arr, opt_i, 0).apply(null, elementsToAdd);
};
goog.array.insertBefore = function(arr, obj, opt_obj2) {
  var i;
  2 == arguments.length || 0 > (i = module$contents$goog$array_indexOf(arr, opt_obj2)) ? arr.push(obj) : module$contents$goog$array_insertAt(arr, obj, i);
};
function module$contents$goog$array_remove(arr, obj) {
  var i = module$contents$goog$array_indexOf(arr, obj), rv;
  (rv = 0 <= i) && module$contents$goog$array_removeAt(arr, i);
  return rv;
}
goog.array.remove = module$contents$goog$array_remove;
function module$contents$goog$array_removeLast(arr, obj) {
  var i = module$contents$goog$array_lastIndexOf(arr, obj);
  return 0 <= i ? (module$contents$goog$array_removeAt(arr, i), !0) : !1;
}
goog.array.removeLast = module$contents$goog$array_removeLast;
function module$contents$goog$array_removeAt(arr, i) {
  goog.asserts.assert(null != arr.length);
  return 1 == Array.prototype.splice.call(arr, i, 1).length;
}
goog.array.removeAt = module$contents$goog$array_removeAt;
goog.array.removeIf = function(arr, f, opt_obj) {
  var i = module$contents$goog$array_findIndex(arr, f, opt_obj);
  return 0 <= i ? (module$contents$goog$array_removeAt(arr, i), !0) : !1;
};
goog.array.removeAllIf = function(arr, f, opt_obj) {
  var removedCount = 0;
  module$contents$goog$array_forEachRight(arr, function(val, index) {
    f.call(opt_obj, val, index, arr) && module$contents$goog$array_removeAt(arr, index) && removedCount++;
  });
  return removedCount;
};
function module$contents$goog$array_concat(var_args) {
  return Array.prototype.concat.apply([], arguments);
}
goog.array.concat = module$contents$goog$array_concat;
goog.array.join = function(var_args) {
  return Array.prototype.concat.apply([], arguments);
};
function module$contents$goog$array_toArray(object) {
  var length = object.length;
  if (0 < length) {
    for (var rv = Array(length), i = 0; i < length; i++) {
      rv[i] = object[i];
    }
    return rv;
  }
  return [];
}
goog.array.toArray = module$contents$goog$array_toArray;
goog.array.clone = module$contents$goog$array_toArray;
function module$contents$goog$array_extend(arr1, var_args) {
  for (var i = 1; i < arguments.length; i++) {
    var arr2 = arguments[i];
    if (goog.isArrayLike(arr2)) {
      var len1 = arr1.length || 0, len2 = arr2.length || 0;
      arr1.length = len1 + len2;
      for (var j = 0; j < len2; j++) {
        arr1[len1 + j] = arr2[j];
      }
    } else {
      arr1.push(arr2);
    }
  }
}
goog.array.extend = module$contents$goog$array_extend;
function module$contents$goog$array_splice(arr, index, howMany, var_args) {
  goog.asserts.assert(null != arr.length);
  return Array.prototype.splice.apply(arr, module$contents$goog$array_slice(arguments, 1));
}
goog.array.splice = module$contents$goog$array_splice;
function module$contents$goog$array_slice(arr, start, opt_end) {
  goog.asserts.assert(null != arr.length);
  return 2 >= arguments.length ? Array.prototype.slice.call(arr, start) : Array.prototype.slice.call(arr, start, opt_end);
}
goog.array.slice = module$contents$goog$array_slice;
function module$contents$goog$array_removeDuplicates(arr, opt_rv, opt_hashFn) {
  for (var returnArray = opt_rv || arr, defaultHashFn = function(item) {
    return goog.isObject(item) ? "o" + goog.getUid(item) : (typeof item).charAt(0) + item;
  }, hashFn = opt_hashFn || defaultHashFn, cursorInsert = 0, cursorRead = 0, seen = {}; cursorRead < arr.length;) {
    var current = arr[cursorRead++], key = hashFn(current);
    Object.prototype.hasOwnProperty.call(seen, key) || (seen[key] = !0, returnArray[cursorInsert++] = current);
  }
  returnArray.length = cursorInsert;
}
goog.array.removeDuplicates = module$contents$goog$array_removeDuplicates;
function module$contents$goog$array_binarySearch(arr, target, opt_compareFn) {
  return module$contents$goog$array_binarySearch_(arr, opt_compareFn || module$contents$goog$array_defaultCompare, !1, target);
}
goog.array.binarySearch = module$contents$goog$array_binarySearch;
goog.array.binarySelect = function(arr, evaluator, opt_obj) {
  return module$contents$goog$array_binarySearch_(arr, evaluator, !0, void 0, opt_obj);
};
function module$contents$goog$array_binarySearch_(arr, compareFn, isEvaluator, opt_target, opt_selfObj) {
  for (var left = 0, right = arr.length, found; left < right;) {
    var middle = left + (right - left >>> 1), compareResult = void 0;
    compareResult = isEvaluator ? compareFn.call(opt_selfObj, arr[middle], middle, arr) : compareFn(opt_target, arr[middle]);
    0 < compareResult ? left = middle + 1 : (right = middle, found = !compareResult);
  }
  return found ? left : -left - 1;
}
function module$contents$goog$array_sort(arr, opt_compareFn) {
  arr.sort(opt_compareFn || module$contents$goog$array_defaultCompare);
}
goog.array.sort = module$contents$goog$array_sort;
goog.array.stableSort = function(arr, opt_compareFn) {
  for (var compArr = Array(arr.length), i = 0; i < arr.length; i++) {
    compArr[i] = {index:i, value:arr[i]};
  }
  var valueCompareFn = opt_compareFn || module$contents$goog$array_defaultCompare;
  module$contents$goog$array_sort(compArr, function(obj1, obj2) {
    return valueCompareFn(obj1.value, obj2.value) || obj1.index - obj2.index;
  });
  for (var i$jscomp$0 = 0; i$jscomp$0 < arr.length; i$jscomp$0++) {
    arr[i$jscomp$0] = compArr[i$jscomp$0].value;
  }
};
function module$contents$goog$array_sortByKey(arr, keyFn, opt_compareFn) {
  var keyCompareFn = opt_compareFn || module$contents$goog$array_defaultCompare;
  module$contents$goog$array_sort(arr, function(a, b) {
    return keyCompareFn(keyFn(a), keyFn(b));
  });
}
goog.array.sortByKey = module$contents$goog$array_sortByKey;
goog.array.sortObjectsByKey = function(arr, key, opt_compareFn) {
  module$contents$goog$array_sortByKey(arr, function(obj) {
    return obj[key];
  }, opt_compareFn);
};
function module$contents$goog$array_isSorted(arr, opt_compareFn, opt_strict) {
  for (var compare = opt_compareFn || module$contents$goog$array_defaultCompare, i = 1; i < arr.length; i++) {
    var compareResult = compare(arr[i - 1], arr[i]);
    if (0 < compareResult || 0 == compareResult && opt_strict) {
      return !1;
    }
  }
  return !0;
}
goog.array.isSorted = module$contents$goog$array_isSorted;
function module$contents$goog$array_equals(arr1, arr2, opt_equalsFn) {
  if (!goog.isArrayLike(arr1) || !goog.isArrayLike(arr2) || arr1.length != arr2.length) {
    return !1;
  }
  for (var l = arr1.length, equalsFn = opt_equalsFn || module$contents$goog$array_defaultCompareEquality, i = 0; i < l; i++) {
    if (!equalsFn(arr1[i], arr2[i])) {
      return !1;
    }
  }
  return !0;
}
goog.array.equals = module$contents$goog$array_equals;
goog.array.compare3 = function(arr1, arr2, opt_compareFn) {
  for (var compare = opt_compareFn || module$contents$goog$array_defaultCompare, l = Math.min(arr1.length, arr2.length), i = 0; i < l; i++) {
    var result = compare(arr1[i], arr2[i]);
    if (0 != result) {
      return result;
    }
  }
  return module$contents$goog$array_defaultCompare(arr1.length, arr2.length);
};
function module$contents$goog$array_defaultCompare(a, b) {
  return a > b ? 1 : a < b ? -1 : 0;
}
goog.array.defaultCompare = module$contents$goog$array_defaultCompare;
goog.array.inverseDefaultCompare = function(a, b) {
  return -module$contents$goog$array_defaultCompare(a, b);
};
function module$contents$goog$array_defaultCompareEquality(a, b) {
  return a === b;
}
goog.array.defaultCompareEquality = module$contents$goog$array_defaultCompareEquality;
goog.array.binaryInsert = function(array, value, opt_compareFn) {
  var index = module$contents$goog$array_binarySearch(array, value, opt_compareFn);
  return 0 > index ? (module$contents$goog$array_insertAt(array, value, -(index + 1)), !0) : !1;
};
goog.array.binaryRemove = function(array, value, opt_compareFn) {
  var index = module$contents$goog$array_binarySearch(array, value, opt_compareFn);
  return 0 <= index ? module$contents$goog$array_removeAt(array, index) : !1;
};
goog.array.bucket = function(array, sorter, opt_obj) {
  for (var buckets = {}, i = 0; i < array.length; i++) {
    var value = array[i], key = sorter.call(opt_obj, value, i, array);
    void 0 !== key && (buckets[key] || (buckets[key] = [])).push(value);
  }
  return buckets;
};
goog.array.bucketToMap = function(array, sorter) {
  for (var buckets = new Map(), i = 0; i < array.length; i++) {
    var value = array[i], key = sorter(value, i, array);
    if (void 0 !== key) {
      var bucket = buckets.get(key);
      bucket || (bucket = [], buckets.set(key, bucket));
      bucket.push(value);
    }
  }
  return buckets;
};
goog.array.toObject = function(arr, keyFunc, opt_obj) {
  var ret = {};
  module$contents$goog$array_forEach(arr, function(element, index) {
    ret[keyFunc.call(opt_obj, element, index, arr)] = element;
  });
  return ret;
};
goog.array.toMap = function(arr, keyFunc) {
  for (var map = new Map(), i = 0; i < arr.length; i++) {
    var element = arr[i];
    map.set(keyFunc(element, i, arr), element);
  }
  return map;
};
function module$contents$goog$array_range(startOrEnd, opt_end, opt_step) {
  var array = [], start = 0, end = startOrEnd, step = opt_step || 1;
  void 0 !== opt_end && (start = startOrEnd, end = opt_end);
  if (0 > step * (end - start)) {
    return [];
  }
  if (0 < step) {
    for (var i = start; i < end; i += step) {
      array.push(i);
    }
  } else {
    for (var i$jscomp$0 = start; i$jscomp$0 > end; i$jscomp$0 += step) {
      array.push(i$jscomp$0);
    }
  }
  return array;
}
goog.array.range = module$contents$goog$array_range;
function module$contents$goog$array_repeat(value, n) {
  for (var array = [], i = 0; i < n; i++) {
    array[i] = value;
  }
  return array;
}
goog.array.repeat = module$contents$goog$array_repeat;
function module$contents$goog$array_flatten(var_args) {
  for (var result = [], i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (Array.isArray(element)) {
      for (var c = 0; c < element.length; c += 8192) {
        for (var chunk = module$contents$goog$array_slice(element, c, c + 8192), recurseResult = module$contents$goog$array_flatten.apply(null, chunk), r = 0; r < recurseResult.length; r++) {
          result.push(recurseResult[r]);
        }
      }
    } else {
      result.push(element);
    }
  }
  return result;
}
goog.array.flatten = module$contents$goog$array_flatten;
goog.array.rotate = function(array, n) {
  goog.asserts.assert(null != array.length);
  array.length && (n %= array.length, 0 < n ? Array.prototype.unshift.apply(array, array.splice(-n, n)) : 0 > n && Array.prototype.push.apply(array, array.splice(0, -n)));
  return array;
};
goog.array.moveItem = function(arr, fromIndex, toIndex) {
  goog.asserts.assert(0 <= fromIndex && fromIndex < arr.length);
  goog.asserts.assert(0 <= toIndex && toIndex < arr.length);
  var removedItems = Array.prototype.splice.call(arr, fromIndex, 1);
  Array.prototype.splice.call(arr, toIndex, 0, removedItems[0]);
};
goog.array.zip = function(var_args) {
  if (!arguments.length) {
    return [];
  }
  for (var result = [], minLen = arguments[0].length, i = 1; i < arguments.length; i++) {
    arguments[i].length < minLen && (minLen = arguments[i].length);
  }
  for (var i$jscomp$0 = 0; i$jscomp$0 < minLen; i$jscomp$0++) {
    for (var value = [], j = 0; j < arguments.length; j++) {
      value.push(arguments[j][i$jscomp$0]);
    }
    result.push(value);
  }
  return result;
};
goog.array.shuffle = function(arr, opt_randFn) {
  for (var randFn = opt_randFn || Math.random, i = arr.length - 1; 0 < i; i--) {
    var j = Math.floor(randFn() * (i + 1)), tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
  }
};
goog.array.copyByIndex = function(arr, index_arr) {
  var result = [];
  module$contents$goog$array_forEach(index_arr, function(index) {
    result.push(arr[index]);
  });
  return result;
};
goog.array.concatMap = function(arr, f, opt_obj) {
  return module$contents$goog$array_concat.apply([], module$contents$goog$array_map(arr, f, opt_obj));
};
goog.dom.HtmlElement = function() {
};
goog.dom.TagName = function() {
};
goog.dom.TagName.cast = function(name, type) {
  return name;
};
goog.dom.TagName.prototype.toString = function() {
};
goog.dom.TagName.A = "A";
goog.dom.TagName.ABBR = "ABBR";
goog.dom.TagName.ACRONYM = "ACRONYM";
goog.dom.TagName.ADDRESS = "ADDRESS";
goog.dom.TagName.APPLET = "APPLET";
goog.dom.TagName.AREA = "AREA";
goog.dom.TagName.ARTICLE = "ARTICLE";
goog.dom.TagName.ASIDE = "ASIDE";
goog.dom.TagName.AUDIO = "AUDIO";
goog.dom.TagName.B = "B";
goog.dom.TagName.BASE = "BASE";
goog.dom.TagName.BASEFONT = "BASEFONT";
goog.dom.TagName.BDI = "BDI";
goog.dom.TagName.BDO = "BDO";
goog.dom.TagName.BIG = "BIG";
goog.dom.TagName.BLOCKQUOTE = "BLOCKQUOTE";
goog.dom.TagName.BODY = "BODY";
goog.dom.TagName.BR = "BR";
goog.dom.TagName.BUTTON = "BUTTON";
goog.dom.TagName.CANVAS = "CANVAS";
goog.dom.TagName.CAPTION = "CAPTION";
goog.dom.TagName.CENTER = "CENTER";
goog.dom.TagName.CITE = "CITE";
goog.dom.TagName.CODE = "CODE";
goog.dom.TagName.COL = "COL";
goog.dom.TagName.COLGROUP = "COLGROUP";
goog.dom.TagName.COMMAND = "COMMAND";
goog.dom.TagName.DATA = "DATA";
goog.dom.TagName.DATALIST = "DATALIST";
goog.dom.TagName.DD = "DD";
goog.dom.TagName.DEL = "DEL";
goog.dom.TagName.DETAILS = "DETAILS";
goog.dom.TagName.DFN = "DFN";
goog.dom.TagName.DIALOG = "DIALOG";
goog.dom.TagName.DIR = "DIR";
goog.dom.TagName.DIV = "DIV";
goog.dom.TagName.DL = "DL";
goog.dom.TagName.DT = "DT";
goog.dom.TagName.EM = "EM";
goog.dom.TagName.EMBED = "EMBED";
goog.dom.TagName.FIELDSET = "FIELDSET";
goog.dom.TagName.FIGCAPTION = "FIGCAPTION";
goog.dom.TagName.FIGURE = "FIGURE";
goog.dom.TagName.FONT = "FONT";
goog.dom.TagName.FOOTER = "FOOTER";
goog.dom.TagName.FORM = "FORM";
goog.dom.TagName.FRAME = "FRAME";
goog.dom.TagName.FRAMESET = "FRAMESET";
goog.dom.TagName.H1 = "H1";
goog.dom.TagName.H2 = "H2";
goog.dom.TagName.H3 = "H3";
goog.dom.TagName.H4 = "H4";
goog.dom.TagName.H5 = "H5";
goog.dom.TagName.H6 = "H6";
goog.dom.TagName.HEAD = "HEAD";
goog.dom.TagName.HEADER = "HEADER";
goog.dom.TagName.HGROUP = "HGROUP";
goog.dom.TagName.HR = "HR";
goog.dom.TagName.HTML = "HTML";
goog.dom.TagName.I = "I";
goog.dom.TagName.IFRAME = "IFRAME";
goog.dom.TagName.IMG = "IMG";
goog.dom.TagName.INPUT = "INPUT";
goog.dom.TagName.INS = "INS";
goog.dom.TagName.ISINDEX = "ISINDEX";
goog.dom.TagName.KBD = "KBD";
goog.dom.TagName.KEYGEN = "KEYGEN";
goog.dom.TagName.LABEL = "LABEL";
goog.dom.TagName.LEGEND = "LEGEND";
goog.dom.TagName.LI = "LI";
goog.dom.TagName.LINK = "LINK";
goog.dom.TagName.MAIN = "MAIN";
goog.dom.TagName.MAP = "MAP";
goog.dom.TagName.MARK = "MARK";
goog.dom.TagName.MATH = "MATH";
goog.dom.TagName.MENU = "MENU";
goog.dom.TagName.MENUITEM = "MENUITEM";
goog.dom.TagName.META = "META";
goog.dom.TagName.METER = "METER";
goog.dom.TagName.NAV = "NAV";
goog.dom.TagName.NOFRAMES = "NOFRAMES";
goog.dom.TagName.NOSCRIPT = "NOSCRIPT";
goog.dom.TagName.OBJECT = "OBJECT";
goog.dom.TagName.OL = "OL";
goog.dom.TagName.OPTGROUP = "OPTGROUP";
goog.dom.TagName.OPTION = "OPTION";
goog.dom.TagName.OUTPUT = "OUTPUT";
goog.dom.TagName.P = "P";
goog.dom.TagName.PARAM = "PARAM";
goog.dom.TagName.PICTURE = "PICTURE";
goog.dom.TagName.PRE = "PRE";
goog.dom.TagName.PROGRESS = "PROGRESS";
goog.dom.TagName.Q = "Q";
goog.dom.TagName.RP = "RP";
goog.dom.TagName.RT = "RT";
goog.dom.TagName.RTC = "RTC";
goog.dom.TagName.RUBY = "RUBY";
goog.dom.TagName.S = "S";
goog.dom.TagName.SAMP = "SAMP";
goog.dom.TagName.SCRIPT = "SCRIPT";
goog.dom.TagName.SECTION = "SECTION";
goog.dom.TagName.SELECT = "SELECT";
goog.dom.TagName.SMALL = "SMALL";
goog.dom.TagName.SOURCE = "SOURCE";
goog.dom.TagName.SPAN = "SPAN";
goog.dom.TagName.STRIKE = "STRIKE";
goog.dom.TagName.STRONG = "STRONG";
goog.dom.TagName.STYLE = "STYLE";
goog.dom.TagName.SUB = "SUB";
goog.dom.TagName.SUMMARY = "SUMMARY";
goog.dom.TagName.SUP = "SUP";
goog.dom.TagName.SVG = "SVG";
goog.dom.TagName.TABLE = "TABLE";
goog.dom.TagName.TBODY = "TBODY";
goog.dom.TagName.TD = "TD";
goog.dom.TagName.TEMPLATE = "TEMPLATE";
goog.dom.TagName.TEXTAREA = "TEXTAREA";
goog.dom.TagName.TFOOT = "TFOOT";
goog.dom.TagName.TH = "TH";
goog.dom.TagName.THEAD = "THEAD";
goog.dom.TagName.TIME = "TIME";
goog.dom.TagName.TITLE = "TITLE";
goog.dom.TagName.TR = "TR";
goog.dom.TagName.TRACK = "TRACK";
goog.dom.TagName.TT = "TT";
goog.dom.TagName.U = "U";
goog.dom.TagName.UL = "UL";
goog.dom.TagName.VAR = "VAR";
goog.dom.TagName.VIDEO = "VIDEO";
goog.dom.TagName.WBR = "WBR";
goog.dom.tags = {};
goog.dom.tags.VOID_TAGS_ = {area:!0, base:!0, br:!0, col:!0, command:!0, embed:!0, hr:!0, img:!0, input:!0, keygen:!0, link:!0, meta:!0, param:!0, source:!0, track:!0, wbr:!0};
goog.dom.tags.isVoidTag = function(tagName) {
  return !0 === goog.dom.tags.VOID_TAGS_[tagName];
};
var module$exports$safevalues$for_closure$index = {}, module$contents$safevalues$for_closure$index_module = module$contents$safevalues$for_closure$index_module || {id:"third_party/javascript/safevalues/for_closure/index.closure.js"};
module$exports$safevalues$for_closure$index.sanitizeUrl = module$contents$safevalues$builders$url_builders_sanitizeUrl;
module$exports$safevalues$for_closure$index.SafeUrl = module$exports$safevalues$internals$url_impl.SafeUrl;
module$exports$safevalues$for_closure$index.unwrapUrl = module$contents$safevalues$internals$url_impl_unwrapUrl;
var module$exports$safevalues$for_closure = {};
module$exports$safevalues$for_closure.sanitizeUrl = module$contents$safevalues$builders$url_builders_sanitizeUrl;
module$exports$safevalues$for_closure.SafeUrl = module$exports$safevalues$internals$url_impl.SafeUrl;
module$exports$safevalues$for_closure.unwrapUrl = module$contents$safevalues$internals$url_impl_unwrapUrl;
var module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE = {}, module$contents$goog$html$SafeStyle_SafeStyle = function(value, token) {
  if (goog.DEBUG && token !== module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE) {
    throw Error("SafeStyle is not meant to be built directly");
  }
  this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = value;
};
module$contents$goog$html$SafeStyle_SafeStyle.fromConstant = function(style) {
  var styleString = goog.string.Const.unwrap(style);
  if (0 === styleString.length) {
    return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;
  }
  (0,goog.asserts.assert)((0,goog.string.internal.endsWith)(styleString, ";"), "Last character of style string is not ';': " + styleString);
  (0,goog.asserts.assert)((0,goog.string.internal.contains)(styleString, ":"), "Style string must contain at least one ':', to specify a \"name: value\" pair: " + styleString);
  return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(styleString);
};
module$contents$goog$html$SafeStyle_SafeStyle.prototype.toString = function() {
  return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString();
};
module$contents$goog$html$SafeStyle_SafeStyle.unwrap = function(safeStyle) {
  if (safeStyle instanceof module$contents$goog$html$SafeStyle_SafeStyle && safeStyle.constructor === module$contents$goog$html$SafeStyle_SafeStyle) {
    return safeStyle.privateDoNotAccessOrElseSafeStyleWrappedValue_;
  }
  (0,goog.asserts.fail)("expected object of type SafeStyle, got '" + safeStyle + "' of type " + goog.typeOf(safeStyle));
  return "type_error:SafeStyle";
};
module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse = function(style) {
  return new module$contents$goog$html$SafeStyle_SafeStyle(style, module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE);
};
module$contents$goog$html$SafeStyle_SafeStyle.create = function(map) {
  var style = "", name;
  for (name in map) {
    if (Object.prototype.hasOwnProperty.call(map, name)) {
      if (!/^[-_a-zA-Z0-9]+$/.test(name)) {
        throw Error("Name allows only [-_a-zA-Z0-9], got: " + name);
      }
      var value = map[name];
      null != value && (value = Array.isArray(value) ? value.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(" ") : module$contents$goog$html$SafeStyle_sanitizePropertyValue(value), style += name + ":" + value + ";");
    }
  }
  return style ? module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(style) : module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;
};
module$contents$goog$html$SafeStyle_SafeStyle.concat = function(var_args) {
  var style = "", addArgument = function(argument) {
    Array.isArray(argument) ? argument.forEach(addArgument) : style += module$contents$goog$html$SafeStyle_SafeStyle.unwrap(argument);
  };
  Array.prototype.forEach.call(arguments, addArgument);
  return style ? module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(style) : module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;
};
module$contents$goog$html$SafeStyle_SafeStyle.EMPTY = module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");
module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING = "zClosurez";
function module$contents$goog$html$SafeStyle_sanitizePropertyValue(value) {
  if (value instanceof module$exports$safevalues$internals$url_impl.SafeUrl) {
    return 'url("' + value.toString().replace(/</g, "%3c").replace(/[\\"]/g, "\\$&") + '")';
  }
  var result = value instanceof goog.string.Const ? goog.string.Const.unwrap(value) : module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(value));
  if (/[{;}]/.test(result)) {
    throw new module$contents$goog$asserts_AssertionError("Value does not allow [{;}], got: %s.", [result]);
  }
  return result;
}
function module$contents$goog$html$SafeStyle_sanitizePropertyValueString(value) {
  var valueWithoutFunctions = value.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE, "$1").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE, "$1").replace(module$contents$goog$html$SafeStyle_URL_RE, "url");
  if (module$contents$goog$html$SafeStyle_VALUE_RE.test(valueWithoutFunctions)) {
    if (module$contents$goog$html$SafeStyle_COMMENT_RE.test(value)) {
      return (0,goog.asserts.fail)("String value disallows comments, got: " + value), module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;
    }
    if (!module$contents$goog$html$SafeStyle_hasBalancedQuotes(value)) {
      return (0,goog.asserts.fail)("String value requires balanced quotes, got: " + value), module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;
    }
    if (!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(value)) {
      return (0,goog.asserts.fail)("String value requires balanced square brackets and one identifier per pair of brackets, got: " + value), module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;
    }
  } else {
    return (0,goog.asserts.fail)("String value allows only [-+,.\"'%_!#/ a-zA-Z0-9\\[\\]] and simple functions, got: " + value), module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;
  }
  return module$contents$goog$html$SafeStyle_sanitizeUrl(value);
}
function module$contents$goog$html$SafeStyle_hasBalancedQuotes(value) {
  for (var outsideSingle = !0, outsideDouble = !0, i = 0; i < value.length; i++) {
    var c = value.charAt(i);
    "'" == c && outsideDouble ? outsideSingle = !outsideSingle : '"' == c && outsideSingle && (outsideDouble = !outsideDouble);
  }
  return outsideSingle && outsideDouble;
}
function module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(value) {
  for (var outside = !0, tokenRe = /^[-_a-zA-Z0-9]$/, i = 0; i < value.length; i++) {
    var c = value.charAt(i);
    if ("]" == c) {
      if (outside) {
        return !1;
      }
      outside = !0;
    } else if ("[" == c) {
      if (!outside) {
        return !1;
      }
      outside = !1;
    } else if (!outside && !tokenRe.test(c)) {
      return !1;
    }
  }
  return outside;
}
var module$contents$goog$html$SafeStyle_VALUE_RE = RegExp("^[-+,.\"'%_!#/ a-zA-Z0-9\\[\\]]+$"), module$contents$goog$html$SafeStyle_URL_RE = RegExp("\\b(url\\([ \t\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \t\n]*\\))", "g"), module$contents$goog$html$SafeStyle_FUNCTIONS_RE = RegExp("\\b(calc|cubic-bezier|fit-content|hsl|hsla|linear-gradient|matrix|minmax|radial-gradient|repeat|rgb|rgba|(rotate|scale|translate)(X|Y|Z|3d)?|steps|var)\\([-+*/0-9a-zA-Z.%#\\[\\], ]+\\)", "g"), module$contents$goog$html$SafeStyle_COMMENT_RE = 
/\/\*/;
function module$contents$goog$html$SafeStyle_sanitizeUrl(value) {
  return value.replace(module$contents$goog$html$SafeStyle_URL_RE, function(match, before, url, after) {
    var quote = "";
    url = url.replace(/^(['"])(.*)\1$/, function(match, start, inside) {
      quote = start;
      return inside;
    });
    var sanitized = module$contents$safevalues$builders$url_builders_sanitizeUrl(url).toString();
    return before + quote + sanitized + quote + after;
  });
}
goog.html.SafeStyle = module$contents$goog$html$SafeStyle_SafeStyle;
var module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE = {}, module$contents$goog$html$SafeStyleSheet_SafeStyleSheet = function(value, token) {
  if (goog.DEBUG && token !== module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE) {
    throw Error("SafeStyleSheet is not meant to be built directly");
  }
  this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = value;
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.prototype.toString = function() {
  return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString();
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createRule = function(selector, style) {
  if ((0,goog.string.internal.contains)(selector, "<")) {
    throw Error("Selector does not allow '<', got: " + selector);
  }
  var selectorToCheck = selector.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g, "");
  if (!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=\\^$|]+$/.test(selectorToCheck)) {
    throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=\\^$|] and strings, got: " + selector);
  }
  if (!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(selectorToCheck)) {
    throw Error("() and [] in selector must be balanced, got: " + selector);
  }
  style instanceof module$contents$goog$html$SafeStyle_SafeStyle || (style = module$contents$goog$html$SafeStyle_SafeStyle.create(style));
  var styleSheet = selector + "{" + module$contents$goog$html$SafeStyle_SafeStyle.unwrap(style).replace(/</g, "\\3C ") + "}";
  return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(styleSheet);
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_ = function(s) {
  for (var brackets = {"(":")", "[":"]"}, expectedBrackets = [], i = 0; i < s.length; i++) {
    var ch = s[i];
    if (brackets[ch]) {
      expectedBrackets.push(brackets[ch]);
    } else if (module$contents$goog$object_contains(brackets, ch) && expectedBrackets.pop() != ch) {
      return !1;
    }
  }
  return 0 == expectedBrackets.length;
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.concat = function(var_args) {
  var result = "", addArgument = function(argument) {
    Array.isArray(argument) ? argument.forEach(addArgument) : result += module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(argument);
  };
  Array.prototype.forEach.call(arguments, addArgument);
  return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(result);
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.fromConstant = function(styleSheet) {
  var styleSheetString = goog.string.Const.unwrap(styleSheet);
  if (0 === styleSheetString.length) {
    return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;
  }
  (0,goog.asserts.assert)(!(0,goog.string.internal.contains)(styleSheetString, "<"), "Forbidden '<' character in style sheet string: " + styleSheetString);
  return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(styleSheetString);
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap = function(safeStyleSheet) {
  if (safeStyleSheet instanceof module$contents$goog$html$SafeStyleSheet_SafeStyleSheet && safeStyleSheet.constructor === module$contents$goog$html$SafeStyleSheet_SafeStyleSheet) {
    return safeStyleSheet.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
  }
  (0,goog.asserts.fail)("expected object of type SafeStyleSheet, got '" + safeStyleSheet + "' of type " + goog.typeOf(safeStyleSheet));
  return "type_error:SafeStyleSheet";
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse = function(styleSheet) {
  return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(styleSheet, module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE);
};
module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY = module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");
goog.html.SafeStyleSheet = module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;
var module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE = {}, module$contents$goog$html$SafeHtml_SafeHtml = function(value, token) {
  if (goog.DEBUG && token !== module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE) {
    throw Error("SafeHtml is not meant to be built directly");
  }
  this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = value;
};
module$contents$goog$html$SafeHtml_SafeHtml.prototype.toString = function() {
  return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString();
};
module$contents$goog$html$SafeHtml_SafeHtml.unwrap = function(safeHtml) {
  return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(safeHtml).toString();
};
module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML = function(safeHtml) {
  if (safeHtml instanceof module$contents$goog$html$SafeHtml_SafeHtml && safeHtml.constructor === module$contents$goog$html$SafeHtml_SafeHtml) {
    return safeHtml.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
  }
  goog.asserts.fail("expected object of type SafeHtml, got '" + safeHtml + "' of type " + goog.typeOf(safeHtml));
  return "type_error:SafeHtml";
};
module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape = function(textOrHtml) {
  return textOrHtml instanceof module$contents$goog$html$SafeHtml_SafeHtml ? textOrHtml : module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(String(textOrHtml)));
};
module$contents$goog$html$SafeHtml_SafeHtml.htmlEscapePreservingNewlines = function(textOrHtml) {
  if (textOrHtml instanceof module$contents$goog$html$SafeHtml_SafeHtml) {
    return textOrHtml;
  }
  var html = module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(textOrHtml);
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(html)));
};
module$contents$goog$html$SafeHtml_SafeHtml.htmlEscapePreservingNewlinesAndSpaces = function(textOrHtml) {
  if (textOrHtml instanceof module$contents$goog$html$SafeHtml_SafeHtml) {
    return textOrHtml;
  }
  var html = module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(textOrHtml);
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(html)));
};
module$contents$goog$html$SafeHtml_SafeHtml.create = function(tagName, attributes, content) {
  module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(tagName));
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(tagName), attributes, content);
};
module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName = function(tagName) {
  if (!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(tagName)) {
    throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? "Invalid tag name <" + tagName + ">." : "");
  }
  if (tagName.toUpperCase() in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES) {
    throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? "Tag name <" + tagName + "> is not allowed for SafeHtml." : "");
  }
};
module$contents$goog$html$SafeHtml_SafeHtml.createIframe = function(src, srcdoc, attributes, content) {
  src && goog.html.TrustedResourceUrl.unwrap(src);
  var fixedAttributes = {};
  fixedAttributes.src = src || null;
  fixedAttributes.srcdoc = srcdoc && module$contents$goog$html$SafeHtml_SafeHtml.unwrap(srcdoc);
  var combinedAttrs = module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(fixedAttributes, {sandbox:""}, attributes);
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", combinedAttrs, content);
};
module$contents$goog$html$SafeHtml_SafeHtml.createSandboxIframe = function(src, srcdoc, attributes, content) {
  if (!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe()) {
    throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? "The browser does not support sandboxed iframes." : "");
  }
  var fixedAttributes = {};
  fixedAttributes.src = src ? module$contents$safevalues$internals$url_impl_unwrapUrl(module$contents$safevalues$builders$url_builders_sanitizeUrl(src)) : null;
  fixedAttributes.srcdoc = srcdoc || null;
  fixedAttributes.sandbox = "";
  var combinedAttrs = module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(fixedAttributes, {}, attributes);
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", combinedAttrs, content);
};
module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe = function() {
  return goog.global.HTMLIFrameElement && "sandbox" in goog.global.HTMLIFrameElement.prototype;
};
module$contents$goog$html$SafeHtml_SafeHtml.createScriptSrc = function(src, attributes) {
  goog.html.TrustedResourceUrl.unwrap(src);
  var combinedAttrs = module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:src}, {}, attributes);
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", combinedAttrs);
};
module$contents$goog$html$SafeHtml_SafeHtml.createStyle = function(styleSheet, attributes) {
  var combinedAttrs = module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"}, {}, attributes), content = "";
  styleSheet = module$contents$goog$array_concat(styleSheet);
  for (var i = 0; i < styleSheet.length; i++) {
    content += module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(styleSheet[i]);
  }
  var htmlContent = module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(content);
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style", combinedAttrs, htmlContent);
};
module$contents$goog$html$SafeHtml_SafeHtml.createMetaRefresh = function(url, secs) {
  var unwrappedUrl = module$contents$safevalues$internals$url_impl_unwrapUrl(module$contents$safevalues$builders$url_builders_sanitizeUrl(url));
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta", {"http-equiv":"refresh", content:(secs || 0) + "; url=" + unwrappedUrl});
};
module$contents$goog$html$SafeHtml_SafeHtml.join = function(separator, parts) {
  var separatorHtml = module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(separator), content = [], addArgument = function(argument) {
    if (Array.isArray(argument)) {
      argument.forEach(addArgument);
    } else {
      var html = module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(argument);
      content.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(html));
    }
  };
  parts.forEach(addArgument);
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(content.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(separatorHtml)));
};
module$contents$goog$html$SafeHtml_SafeHtml.concat = function(var_args) {
  return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY, Array.prototype.slice.call(arguments));
};
module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse = function(html) {
  var noinlineHtml = html, policy = goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse(), trustedHtml = policy ? policy.createHTML(noinlineHtml) : noinlineHtml;
  return new module$contents$goog$html$SafeHtml_SafeHtml(trustedHtml, module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);
};
module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse = function(tagName, attributes, content) {
  var result = "<" + tagName + module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(tagName, attributes);
  null == content ? content = [] : Array.isArray(content) || (content = [content]);
  if (goog.dom.tags.isVoidTag(tagName.toLowerCase())) {
    goog.asserts.assert(!content.length, "Void tag <" + tagName + "> does not allow content."), result += ">";
  } else {
    var html = module$contents$goog$html$SafeHtml_SafeHtml.concat(content);
    result += ">" + module$contents$goog$html$SafeHtml_SafeHtml.unwrap(html) + "</" + tagName + ">";
  }
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(result);
};
module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes = function(tagName, attributes) {
  var result = "";
  if (attributes) {
    for (var name in attributes) {
      if (Object.prototype.hasOwnProperty.call(attributes, name)) {
        if (!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(name)) {
          throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? 'Invalid attribute name "' + name + '".' : "");
        }
        var value = attributes[name];
        null != value && (result += " " + module$contents$goog$html$SafeHtml_getAttrNameAndValue(tagName, name, value));
      }
    }
  }
  return result;
};
module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes = function(fixedAttributes, defaultAttributes, attributes) {
  var combinedAttributes = {}, name;
  for (name in fixedAttributes) {
    Object.prototype.hasOwnProperty.call(fixedAttributes, name) && (goog.asserts.assert(name.toLowerCase() == name, "Must be lower case"), combinedAttributes[name] = fixedAttributes[name]);
  }
  for (var name$jscomp$0 in defaultAttributes) {
    Object.prototype.hasOwnProperty.call(defaultAttributes, name$jscomp$0) && (goog.asserts.assert(name$jscomp$0.toLowerCase() == name$jscomp$0, "Must be lower case"), combinedAttributes[name$jscomp$0] = defaultAttributes[name$jscomp$0]);
  }
  if (attributes) {
    for (var name$jscomp$1 in attributes) {
      if (Object.prototype.hasOwnProperty.call(attributes, name$jscomp$1)) {
        var nameLower = name$jscomp$1.toLowerCase();
        if (nameLower in fixedAttributes) {
          throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot override "' + nameLower + '" attribute, got "' + name$jscomp$1 + '" with value "' + attributes[name$jscomp$1] + '"' : "");
        }
        nameLower in defaultAttributes && delete combinedAttributes[nameLower];
        combinedAttributes[name$jscomp$1] = attributes[name$jscomp$1];
      }
    }
  }
  return combinedAttributes;
};
module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES = goog.DEBUG;
module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE = !0;
module$contents$goog$html$SafeHtml_SafeHtml.from = module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;
var module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG = /^[a-zA-Z0-9-]+$/, module$contents$goog$html$SafeHtml_URL_ATTRIBUTES = {action:!0, cite:!0, data:!0, formaction:!0, href:!0, manifest:!0, poster:!0, src:!0}, module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES = module$contents$goog$object_createSet(goog.dom.TagName.APPLET, goog.dom.TagName.BASE, goog.dom.TagName.EMBED, goog.dom.TagName.IFRAME, goog.dom.TagName.LINK, goog.dom.TagName.MATH, goog.dom.TagName.META, goog.dom.TagName.OBJECT, 
goog.dom.TagName.SCRIPT, goog.dom.TagName.STYLE, goog.dom.TagName.SVG, goog.dom.TagName.TEMPLATE);
function module$contents$goog$html$SafeHtml_getAttrNameAndValue(tagName, name, value) {
  if (value instanceof goog.string.Const) {
    value = goog.string.Const.unwrap(value);
  } else if ("style" == name.toLowerCase()) {
    if (module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE) {
      value = module$contents$goog$html$SafeHtml_getStyleValue(value);
    } else {
      throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "style" not supported.' : "");
    }
  } else {
    if (/^on/i.test(name)) {
      throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + name + '" requires goog.string.Const value, "' + value + '" given.' : "");
    }
    if (name.toLowerCase() in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES) {
      if (value instanceof goog.html.TrustedResourceUrl) {
        value = goog.html.TrustedResourceUrl.unwrap(value);
      } else if (value instanceof module$exports$safevalues$internals$url_impl.SafeUrl) {
        value = module$contents$safevalues$internals$url_impl_unwrapUrl(value);
      } else if ("string" === typeof value) {
        value = module$contents$safevalues$builders$url_builders_sanitizeUrl(value).toString();
      } else {
        throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + name + '" on tag "' + tagName + '" requires safevalues.SafeUrl, goog.string.Const, or string, value "' + value + '" given.' : "");
      }
    }
  }
  goog.asserts.assert(value instanceof module$exports$safevalues$internals$url_impl.SafeUrl || value instanceof goog.html.TrustedResourceUrl || value instanceof module$contents$goog$html$SafeStyle_SafeStyle || value instanceof module$contents$goog$html$SafeHtml_SafeHtml || "string" === typeof value || "number" === typeof value, "String or number value expected, got " + typeof value + " with value: " + value);
  return name + '="' + goog.string.internal.htmlEscape(String(value)) + '"';
}
function module$contents$goog$html$SafeHtml_getStyleValue(value) {
  if (!goog.isObject(value)) {
    throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES ? 'The "style" attribute requires goog.html.SafeStyle or map of style properties, ' + typeof value + " given: " + value : "");
  }
  value instanceof module$contents$goog$html$SafeStyle_SafeStyle || (value = module$contents$goog$html$SafeStyle_SafeStyle.create(value));
  return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(value);
}
module$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML = function() {
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>");
}();
module$contents$goog$html$SafeHtml_SafeHtml.EMPTY = new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes && goog.global.trustedTypes.emptyHTML || "", module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);
module$contents$goog$html$SafeHtml_SafeHtml.BR = function() {
  return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>");
}();
goog.html.SafeHtml = module$contents$goog$html$SafeHtml_SafeHtml;
var module$exports$goog$html$safehtml_internals_for_safevalues = {};
module$exports$goog$html$safehtml_internals_for_safevalues.createSafeHtml = module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse;
var module$exports$safevalues$internals$html_impl = {}, module$contents$safevalues$internals$html_impl_module = module$contents$safevalues$internals$html_impl_module || {id:"third_party/javascript/safevalues/internals/html_impl.closure.js"};
module$exports$safevalues$internals$html_impl.SafeHtml = module$contents$goog$html$SafeHtml_SafeHtml;
module$exports$safevalues$internals$html_impl.createHtmlInternal = function(html) {
  return (0,module$exports$goog$html$safehtml_internals_for_safevalues.createSafeHtml)(html);
};
module$exports$safevalues$internals$html_impl.EMPTY_HTML = module$contents$goog$html$SafeHtml_SafeHtml.EMPTY;
module$exports$safevalues$internals$html_impl.isHtml = function(value) {
  return value instanceof module$contents$goog$html$SafeHtml_SafeHtml;
};
module$exports$safevalues$internals$html_impl.unwrapHtml = function(value) {
  return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(value);
};
var module$exports$goog$html$safestyle_internals_for_safevalues = {};
module$exports$goog$html$safestyle_internals_for_safevalues.createSafeStyle = module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse;
var module$exports$safevalues$internals$style_impl = {}, module$contents$safevalues$internals$style_impl_module = module$contents$safevalues$internals$style_impl_module || {id:"third_party/javascript/safevalues/internals/style_impl.closure.js"};
module$exports$safevalues$internals$style_impl.SafeStyle = module$contents$goog$html$SafeStyle_SafeStyle;
function module$contents$safevalues$internals$style_impl_createStyleInternal(style) {
  return (0,module$exports$goog$html$safestyle_internals_for_safevalues.createSafeStyle)(style);
}
module$exports$safevalues$internals$style_impl.createStyleInternal = module$contents$safevalues$internals$style_impl_createStyleInternal;
function module$contents$safevalues$internals$style_impl_isStyle(value) {
  return value instanceof module$contents$goog$html$SafeStyle_SafeStyle;
}
module$exports$safevalues$internals$style_impl.isStyle = module$contents$safevalues$internals$style_impl_isStyle;
function module$contents$safevalues$internals$style_impl_unwrapStyle(value) {
  return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(value);
}
module$exports$safevalues$internals$style_impl.unwrapStyle = module$contents$safevalues$internals$style_impl_unwrapStyle;
var module$exports$safevalues$dom$elements$element = {}, module$contents$safevalues$dom$elements$element_module = module$contents$safevalues$dom$elements$element_module || {id:"third_party/javascript/safevalues/dom/elements/element.closure.js"};
module$exports$safevalues$dom$elements$element.setInnerHtml = function(elOrRoot, v) {
  module$contents$safevalues$dom$elements$element_isElement(elOrRoot) && module$contents$safevalues$dom$elements$element_throwIfScriptOrStyle(elOrRoot);
  elOrRoot.innerHTML = (0,module$exports$safevalues$internals$html_impl.unwrapHtml)(v);
};
module$exports$safevalues$dom$elements$element.setOuterHtml = function(e, v) {
  var parent = e.parentElement;
  null !== parent && module$contents$safevalues$dom$elements$element_throwIfScriptOrStyle(parent);
  e.outerHTML = (0,module$exports$safevalues$internals$html_impl.unwrapHtml)(v);
};
module$exports$safevalues$dom$elements$element.setCssText = function(e, v) {
  e.style.cssText = module$contents$safevalues$internals$style_impl_unwrapStyle(v);
};
module$exports$safevalues$dom$elements$element.insertAdjacentHtml = function(element, position, v) {
  var tagContext = "beforebegin" === position || "afterend" === position ? element.parentElement : element;
  null !== tagContext && module$contents$safevalues$dom$elements$element_throwIfScriptOrStyle(tagContext);
  element.insertAdjacentHTML(position, (0,module$exports$safevalues$internals$html_impl.unwrapHtml)(v));
};
module$exports$safevalues$dom$elements$element.buildPrefixedAttributeSetter = function(prefix) {
  var prefixes = [prefix].concat($jscomp.arrayFromIterable($jscomp.getRestArguments.apply(1, arguments)));
  return function(e, attr, value) {
    module$contents$safevalues$dom$elements$element_setPrefixedAttribute(prefixes, e, attr, value);
  };
};
function module$contents$safevalues$dom$elements$element_setPrefixedAttribute(attrPrefixes, e, attr, value) {
  if (0 === attrPrefixes.length) {
    var message = "";
    goog.DEBUG && (message = "No prefixes are provided");
    throw Error(message);
  }
  var prefixes = attrPrefixes.map(function(s) {
    return module$contents$safevalues$internals$attribute_impl_unwrapAttributePrefix(s);
  }), attrLower = attr.toLowerCase();
  if (prefixes.every(function(p) {
    return 0 !== attrLower.indexOf(p);
  })) {
    throw Error('Attribute "' + attr + '" does not match any of the allowed prefixes.');
  }
  e.setAttribute(attr, value);
}
module$exports$safevalues$dom$elements$element.setPrefixedAttribute = module$contents$safevalues$dom$elements$element_setPrefixedAttribute;
function module$contents$safevalues$dom$elements$element_throwIfScriptOrStyle(element) {
  var message = "", tagName = element.tagName;
  if ("SCRIPT" === tagName || "STYLE" === tagName) {
    throw goog.DEBUG && (message = "SCRIPT" === tagName ? "Use safeScriptEl.setTextContent with a SafeScript." : "Use safeStyleEl.setTextContent with a SafeStyleSheet."), Error(message);
  }
}
function module$contents$safevalues$dom$elements$element_isElement(elOrRoot) {
  return 1 === elOrRoot.nodeType;
}
;var module$exports$safevalues$dom$elements$embed = {}, module$contents$safevalues$dom$elements$embed_module = module$contents$safevalues$dom$elements$embed_module || {id:"third_party/javascript/safevalues/dom/elements/embed.closure.js"};
module$exports$safevalues$dom$elements$embed.setSrc = function(embedEl, url) {
  embedEl.src = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(url);
};
var module$exports$safevalues$dom$elements$form = {}, module$contents$safevalues$dom$elements$form_module = module$contents$safevalues$dom$elements$form_module || {id:"third_party/javascript/safevalues/dom/elements/form.closure.js"};
module$exports$safevalues$dom$elements$form.setAction = function(form, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && (form.action = sanitizedUrl);
};
var module$exports$check = {}, module$contents$check_module = module$contents$check_module || {id:"javascript/typescript/contrib/check.closure.js"};
function module$contents$check_checkExhaustive(value, msg) {
  return module$contents$check_checkExhaustiveAllowing(value, msg);
}
module$exports$check.checkExhaustive = module$contents$check_checkExhaustive;
function module$contents$check_checkExhaustiveAllowing(value, msg) {
  throw Error(void 0 === msg ? "unexpected value " + value + "!" : msg);
}
module$exports$check.checkExhaustiveAllowing = module$contents$check_checkExhaustiveAllowing;
module$exports$check.assumeExhaustive = function(value) {
};
module$exports$check.assumeExhaustiveAllowing = function(value) {
};
var module$exports$safevalues$dom$elements$iframe = {}, module$contents$safevalues$dom$elements$iframe_module = module$contents$safevalues$dom$elements$iframe_module || {id:"third_party/javascript/safevalues/dom/elements/iframe.closure.js"};
function module$contents$safevalues$dom$elements$iframe_setSrc(iframe, v) {
  iframe.src = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(v).toString();
}
module$exports$safevalues$dom$elements$iframe.setSrc = module$contents$safevalues$dom$elements$iframe_setSrc;
function module$contents$safevalues$dom$elements$iframe_setSrcdoc(iframe, v) {
  iframe.srcdoc = (0,module$exports$safevalues$internals$html_impl.unwrapHtml)(v);
}
module$exports$safevalues$dom$elements$iframe.setSrcdoc = module$contents$safevalues$dom$elements$iframe_setSrcdoc;
module$exports$safevalues$dom$elements$iframe.Intent = {FORMATTED_HTML_CONTENT:0, EMBEDDED_INTERNAL_CONTENT:1, EMBEDDED_TRUSTED_EXTERNAL_CONTENT:2};
module$exports$safevalues$dom$elements$iframe.Intent[module$exports$safevalues$dom$elements$iframe.Intent.FORMATTED_HTML_CONTENT] = "FORMATTED_HTML_CONTENT";
module$exports$safevalues$dom$elements$iframe.Intent[module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_INTERNAL_CONTENT] = "EMBEDDED_INTERNAL_CONTENT";
module$exports$safevalues$dom$elements$iframe.Intent[module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_TRUSTED_EXTERNAL_CONTENT] = "EMBEDDED_TRUSTED_EXTERNAL_CONTENT";
var module$contents$safevalues$dom$elements$iframe_SandboxDirective = {ALLOW_SAME_ORIGIN:"allow-same-origin", ALLOW_SCRIPTS:"allow-scripts", ALLOW_FORMS:"allow-forms", ALLOW_POPUPS:"allow-popups", ALLOW_POPUPS_TO_ESCAPE_SANDBOX:"allow-popups-to-escape-sandbox", ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION:"allow-storage-access-by-user-activation"};
function module$contents$safevalues$dom$elements$iframe_setSandboxDirectives(ifr, directives) {
  ifr.setAttribute("sandbox", "");
  for (var i = 0; i < directives.length; i++) {
    ifr.sandbox.supports && !ifr.sandbox.supports(directives[i]) || ifr.sandbox.add(directives[i]);
  }
}
module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError = function(type, intent) {
  var $jscomp$tmp$error$494508883$1 = Error.call(this, type + " cannot be used with intent " + module$exports$safevalues$dom$elements$iframe.Intent[intent]);
  this.message = $jscomp$tmp$error$494508883$1.message;
  "stack" in $jscomp$tmp$error$494508883$1 && (this.stack = $jscomp$tmp$error$494508883$1.stack);
  this.type = type;
  this.intent = intent;
  this.name = "TypeCannotBeUsedWithIntentError";
};
$jscomp.inherits(module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError, Error);
module$exports$safevalues$dom$elements$iframe.setSrcWithIntent = function(element, intent, src) {
  element.removeAttribute("srcdoc");
  switch(intent) {
    case module$exports$safevalues$dom$elements$iframe.Intent.FORMATTED_HTML_CONTENT:
      if (src instanceof goog.html.TrustedResourceUrl) {
        throw new module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError("TrustedResourceUrl", module$exports$safevalues$dom$elements$iframe.Intent.FORMATTED_HTML_CONTENT);
      }
      module$contents$safevalues$dom$elements$iframe_setSandboxDirectives(element, []);
      var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(src);
      void 0 !== sanitizedUrl && (element.src = sanitizedUrl);
      break;
    case module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_INTERNAL_CONTENT:
      if (!(src instanceof goog.html.TrustedResourceUrl)) {
        throw new module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError(typeof src, module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_INTERNAL_CONTENT);
      }
      module$contents$safevalues$dom$elements$iframe_setSandboxDirectives(element, [module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_SAME_ORIGIN, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_SCRIPTS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_FORMS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS, 
      module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS_TO_ESCAPE_SANDBOX, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION]);
      module$contents$safevalues$dom$elements$iframe_setSrc(element, src);
      break;
    case module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_TRUSTED_EXTERNAL_CONTENT:
      if (src instanceof goog.html.TrustedResourceUrl) {
        throw new module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError("TrustedResourceUrl", module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_TRUSTED_EXTERNAL_CONTENT);
      }
      module$contents$safevalues$dom$elements$iframe_setSandboxDirectives(element, [module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_SAME_ORIGIN, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_SCRIPTS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_FORMS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS, 
      module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS_TO_ESCAPE_SANDBOX, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION]);
      var sanitizedUrl$jscomp$0 = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(src);
      void 0 !== sanitizedUrl$jscomp$0 && (element.src = sanitizedUrl$jscomp$0);
      break;
    default:
      module$contents$check_checkExhaustive(intent);
  }
};
module$exports$safevalues$dom$elements$iframe.setSrcdocWithIntent = function(element, intent, srcdoc) {
  element.removeAttribute("src");
  switch(intent) {
    case module$exports$safevalues$dom$elements$iframe.Intent.FORMATTED_HTML_CONTENT:
      if (srcdoc instanceof module$exports$safevalues$internals$html_impl.SafeHtml) {
        throw new module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError("SafeHtml", module$exports$safevalues$dom$elements$iframe.Intent.FORMATTED_HTML_CONTENT);
      }
      element.csp = "default-src 'none'";
      module$contents$safevalues$dom$elements$iframe_setSandboxDirectives(element, []);
      module$contents$safevalues$dom$elements$iframe_setSrcdoc(element, (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(srcdoc));
      break;
    case module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_INTERNAL_CONTENT:
      if (!(srcdoc instanceof module$exports$safevalues$internals$html_impl.SafeHtml)) {
        throw new module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError("string", module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_INTERNAL_CONTENT);
      }
      module$contents$safevalues$dom$elements$iframe_setSandboxDirectives(element, [module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_SAME_ORIGIN, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_SCRIPTS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_FORMS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS, 
      module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS_TO_ESCAPE_SANDBOX, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION]);
      module$contents$safevalues$dom$elements$iframe_setSrcdoc(element, srcdoc);
      break;
    case module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_TRUSTED_EXTERNAL_CONTENT:
      if (srcdoc instanceof module$exports$safevalues$internals$html_impl.SafeHtml) {
        throw new module$exports$safevalues$dom$elements$iframe.TypeCannotBeUsedWithIntentError("SafeHtml", module$exports$safevalues$dom$elements$iframe.Intent.EMBEDDED_INTERNAL_CONTENT);
      }
      module$contents$safevalues$dom$elements$iframe_setSandboxDirectives(element, [module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_SCRIPTS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_FORMS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS, module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_POPUPS_TO_ESCAPE_SANDBOX, 
      module$contents$safevalues$dom$elements$iframe_SandboxDirective.ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION]);
      module$contents$safevalues$dom$elements$iframe_setSrcdoc(element, (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(srcdoc));
      break;
    default:
      module$contents$check_checkExhaustive(intent);
  }
};
var module$exports$safevalues$dom$elements$input = {}, module$contents$safevalues$dom$elements$input_module = module$contents$safevalues$dom$elements$input_module || {id:"third_party/javascript/safevalues/dom/elements/input.closure.js"};
module$exports$safevalues$dom$elements$input.setFormaction = function(input, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && (input.formAction = sanitizedUrl);
};
var module$exports$safevalues$dom$elements$link = {}, module$contents$safevalues$dom$elements$link_module = module$contents$safevalues$dom$elements$link_module || {id:"third_party/javascript/safevalues/dom/elements/link.closure.js"}, module$contents$safevalues$dom$elements$link_SAFE_URL_REL_VALUES = "alternate author bookmark canonical cite help icon license modulepreload next prefetch dns-prefetch prerender preconnect preload prev search subresource".split(" ");
module$exports$safevalues$dom$elements$link.setHrefAndRel = function(link, url, rel) {
  if (module$contents$safevalues$internals$resource_url_impl_isResourceUrl(url)) {
    link.href = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(url).toString();
  } else {
    if (-1 === module$contents$safevalues$dom$elements$link_SAFE_URL_REL_VALUES.indexOf(rel)) {
      throw Error('TrustedResourceUrl href attribute required with rel="' + rel + '"');
    }
    var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
    if (void 0 === sanitizedUrl) {
      return;
    }
    link.href = sanitizedUrl;
  }
  link.rel = rel;
};
var module$exports$safevalues$dom$elements$object = {}, module$contents$safevalues$dom$elements$object_module = module$contents$safevalues$dom$elements$object_module || {id:"third_party/javascript/safevalues/dom/elements/object.closure.js"};
module$exports$safevalues$dom$elements$object.setData = function(obj, v) {
  obj.data = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(v);
};
var module$exports$safevalues$dom$globals$window = {}, module$contents$safevalues$dom$globals$window_module = module$contents$safevalues$dom$globals$window_module || {id:"third_party/javascript/safevalues/dom/globals/window.closure.js"};
module$exports$safevalues$dom$globals$window.open = function(win, url, target, features) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  return void 0 !== sanitizedUrl ? win.open(sanitizedUrl, target, features) : null;
};
module$exports$safevalues$dom$globals$window.getScriptNonce = function(win) {
  return module$contents$safevalues$dom$globals$window_getNonceFor("script", win);
};
module$exports$safevalues$dom$globals$window.getStyleNonce = function(win) {
  return module$contents$safevalues$dom$globals$window_getNonceFor("style", win);
};
function module$contents$safevalues$dom$globals$window_getNonceFor(elementName, win) {
  var $jscomp$optchain$tmpm1987982378$0, $jscomp$optchain$tmpm1987982378$1, el = null == ($jscomp$optchain$tmpm1987982378$1 = ($jscomp$optchain$tmpm1987982378$0 = win.document).querySelector) ? void 0 : $jscomp$optchain$tmpm1987982378$1.call($jscomp$optchain$tmpm1987982378$0, elementName + "[nonce]");
  return el ? el.nonce || el.getAttribute("nonce") || "" : "";
}
;var module$exports$safevalues$internals$script_impl = {}, module$contents$safevalues$internals$script_impl_module = module$contents$safevalues$internals$script_impl_module || {id:"third_party/javascript/safevalues/internals/script_impl.closure.js"}, module$contents$safevalues$internals$script_impl_trustedTypes = goog.global.trustedTypes;
module$exports$safevalues$internals$script_impl.SafeScript = function(token, value) {
  goog.DEBUG && module$contents$safevalues$internals$secrets_ensureTokenIsValid(token);
  this.privateDoNotAccessOrElseWrappedScript = value;
};
module$exports$safevalues$internals$script_impl.SafeScript.prototype.toString = function() {
  return this.privateDoNotAccessOrElseWrappedScript.toString();
};
var module$contents$safevalues$internals$script_impl_ScriptImpl = module$exports$safevalues$internals$script_impl.SafeScript;
function module$contents$safevalues$internals$script_impl_constructScript(value) {
  return new module$exports$safevalues$internals$script_impl.SafeScript(module$exports$safevalues$internals$secrets.secretToken, value);
}
function module$contents$safevalues$internals$script_impl_createScriptInternal(value) {
  var noinlineValue = value, policy = (0,goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse)();
  return module$contents$safevalues$internals$script_impl_constructScript(policy ? policy.createScript(noinlineValue) : noinlineValue);
}
module$exports$safevalues$internals$script_impl.createScriptInternal = module$contents$safevalues$internals$script_impl_createScriptInternal;
module$exports$safevalues$internals$script_impl.EMPTY_SCRIPT = module$contents$safevalues$internals$pure_pure(function() {
  return module$contents$safevalues$internals$script_impl_constructScript(module$contents$safevalues$internals$script_impl_trustedTypes ? module$contents$safevalues$internals$script_impl_trustedTypes.emptyScript : "");
});
function module$contents$safevalues$internals$script_impl_isScript(value) {
  return value instanceof module$exports$safevalues$internals$script_impl.SafeScript;
}
module$exports$safevalues$internals$script_impl.isScript = module$contents$safevalues$internals$script_impl_isScript;
function module$contents$safevalues$internals$script_impl_unwrapScript(value) {
  if (module$contents$safevalues$internals$script_impl_isScript(value)) {
    return value.privateDoNotAccessOrElseWrappedScript;
  }
  var message = "";
  goog.DEBUG && (message = "Unexpected type when unwrapping SafeScript");
  throw Error(message);
}
module$exports$safevalues$internals$script_impl.unwrapScript = module$contents$safevalues$internals$script_impl_unwrapScript;
var module$exports$safevalues$dom$elements$script = {}, module$contents$safevalues$dom$elements$script_module = module$contents$safevalues$dom$elements$script_module || {id:"third_party/javascript/safevalues/dom/elements/script.closure.js"};
function module$contents$safevalues$dom$elements$script_setNonceForScriptElement(script) {
  var nonce = (0,module$exports$safevalues$dom$globals$window.getScriptNonce)(script.ownerDocument && script.ownerDocument.defaultView || window);
  nonce && script.setAttribute("nonce", nonce);
}
module$exports$safevalues$dom$elements$script.setTextContent = function(script, v, options) {
  script.textContent = module$contents$safevalues$internals$script_impl_unwrapScript(v);
  (null == options ? 0 : options.omitNonce) || module$contents$safevalues$dom$elements$script_setNonceForScriptElement(script);
};
module$exports$safevalues$dom$elements$script.setSrc = function(script, v, options) {
  script.src = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(v);
  (null == options ? 0 : options.omitNonce) || module$contents$safevalues$dom$elements$script_setNonceForScriptElement(script);
};
var module$exports$goog$html$safestylesheet_internals_for_safevalues = {};
module$exports$goog$html$safestylesheet_internals_for_safevalues.createSafeStyleSheet = module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse;
var module$exports$safevalues$internals$style_sheet_impl = {}, module$contents$safevalues$internals$style_sheet_impl_module = module$contents$safevalues$internals$style_sheet_impl_module || {id:"third_party/javascript/safevalues/internals/style_sheet_impl.closure.js"};
module$exports$safevalues$internals$style_sheet_impl.SafeStyleSheet = module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;
function module$contents$safevalues$internals$style_sheet_impl_createStyleSheetInternal(styleSheet) {
  return (0,module$exports$goog$html$safestylesheet_internals_for_safevalues.createSafeStyleSheet)(styleSheet);
}
module$exports$safevalues$internals$style_sheet_impl.createStyleSheetInternal = module$contents$safevalues$internals$style_sheet_impl_createStyleSheetInternal;
function module$contents$safevalues$internals$style_sheet_impl_isStyleSheet(value) {
  return value instanceof module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;
}
module$exports$safevalues$internals$style_sheet_impl.isStyleSheet = module$contents$safevalues$internals$style_sheet_impl_isStyleSheet;
function module$contents$safevalues$internals$style_sheet_impl_unwrapStyleSheet(value) {
  return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(value);
}
module$exports$safevalues$internals$style_sheet_impl.unwrapStyleSheet = module$contents$safevalues$internals$style_sheet_impl_unwrapStyleSheet;
var module$exports$safevalues$dom$elements$style = {}, module$contents$safevalues$dom$elements$style_module = module$contents$safevalues$dom$elements$style_module || {id:"third_party/javascript/safevalues/dom/elements/style.closure.js"};
module$exports$safevalues$dom$elements$style.setTextContent = function(elem, safeStyleSheet) {
  elem.textContent = module$contents$safevalues$internals$style_sheet_impl_unwrapStyleSheet(safeStyleSheet);
};
var module$exports$safevalues$dom$elements$svg = {}, module$contents$safevalues$dom$elements$svg_module = module$contents$safevalues$dom$elements$svg_module || {id:"third_party/javascript/safevalues/dom/elements/svg.closure.js"}, module$contents$safevalues$dom$elements$svg_UNSAFE_SVG_ATTRIBUTES = ["href", "xlink:href"];
module$exports$safevalues$dom$elements$svg.setAttribute = function(svg, attr, value) {
  var attrLower = attr.toLowerCase();
  if (-1 !== module$contents$safevalues$dom$elements$svg_UNSAFE_SVG_ATTRIBUTES.indexOf(attrLower) || 0 === attrLower.indexOf("on")) {
    var msg = "";
    goog.DEBUG && (msg = "Setting the '" + attrLower + "' attribute on SVG can cause XSS.");
    throw Error(msg);
  }
  svg.setAttribute(attr, value);
};
goog.debug.errorcontext = {};
goog.debug.errorcontext.addErrorContext = function(err, contextKey, contextValue) {
  err[goog.debug.errorcontext.CONTEXT_KEY_] || (err[goog.debug.errorcontext.CONTEXT_KEY_] = {});
  err[goog.debug.errorcontext.CONTEXT_KEY_][contextKey] = contextValue;
};
goog.debug.errorcontext.getErrorContext = function(err) {
  return err[goog.debug.errorcontext.CONTEXT_KEY_] || {};
};
goog.debug.errorcontext.CONTEXT_KEY_ = "__closure__error__context__984382";
goog.debug.LOGGING_ENABLED = goog.DEBUG;
goog.debug.FORCE_SLOPPY_STACKS = !1;
goog.debug.CHECK_FOR_THROWN_EVENT = !1;
goog.debug.catchErrors = function(logFunc, opt_cancel, opt_target) {
  var target = opt_target || goog.global, oldErrorHandler = target.onerror, retVal = !!opt_cancel;
  target.onerror = function(message, url, line, opt_col, opt_error) {
    oldErrorHandler && oldErrorHandler(message, url, line, opt_col, opt_error);
    logFunc({message:message, fileName:url, line:line, lineNumber:line, col:opt_col, error:opt_error});
    return retVal;
  };
};
goog.debug.expose = function(obj, opt_showFn) {
  if ("undefined" == typeof obj) {
    return "undefined";
  }
  if (null == obj) {
    return "NULL";
  }
  var str = [], x;
  for (x in obj) {
    if (opt_showFn || "function" !== typeof obj[x]) {
      var s = x + " = ";
      try {
        s += obj[x];
      } catch (e) {
        s += "*** " + e + " ***";
      }
      str.push(s);
    }
  }
  return str.join("\n");
};
goog.debug.deepExpose = function(obj, opt_showFn) {
  var str = [], uidsToCleanup = [], ancestorUids = {}, helper = function(obj, space) {
    var nestspace = space + "  ", indentMultiline = function(str) {
      return str.replace(/\n/g, "\n" + space);
    };
    try {
      if (void 0 === obj) {
        str.push("undefined");
      } else if (null === obj) {
        str.push("NULL");
      } else if ("string" === typeof obj) {
        str.push('"' + indentMultiline(obj) + '"');
      } else if ("function" === typeof obj) {
        str.push(indentMultiline(String(obj)));
      } else if (goog.isObject(obj)) {
        goog.hasUid(obj) || uidsToCleanup.push(obj);
        var uid = goog.getUid(obj);
        if (ancestorUids[uid]) {
          str.push("*** reference loop detected (id=" + uid + ") ***");
        } else {
          ancestorUids[uid] = !0;
          str.push("{");
          for (var x in obj) {
            if (opt_showFn || "function" !== typeof obj[x]) {
              str.push("\n"), str.push(nestspace), str.push(x + " = "), helper(obj[x], nestspace);
            }
          }
          str.push("\n" + space + "}");
          delete ancestorUids[uid];
        }
      } else {
        str.push(obj);
      }
    } catch (e) {
      str.push("*** " + e + " ***");
    }
  };
  helper(obj, "");
  for (var i = 0; i < uidsToCleanup.length; i++) {
    goog.removeUid(uidsToCleanup[i]);
  }
  return str.join("");
};
goog.debug.exposeArray = function(arr) {
  for (var str = [], i = 0; i < arr.length; i++) {
    Array.isArray(arr[i]) ? str.push(goog.debug.exposeArray(arr[i])) : str.push(arr[i]);
  }
  return "[ " + str.join(", ") + " ]";
};
goog.debug.normalizeErrorObject = function(err) {
  var href = goog.getObjectByName("window.location.href");
  null == err && (err = 'Unknown Error of type "null/undefined"');
  if ("string" === typeof err) {
    return {message:err, name:"Unknown error", lineNumber:"Not available", fileName:href, stack:"Not available"};
  }
  var threwError = !1;
  try {
    var lineNumber = err.lineNumber || err.line || "Not available";
  } catch (e) {
    lineNumber = "Not available", threwError = !0;
  }
  try {
    var fileName = err.fileName || err.filename || err.sourceURL || goog.global.$googDebugFname || href;
  } catch (e) {
    fileName = "Not available", threwError = !0;
  }
  var stack = goog.debug.serializeErrorStack_(err);
  if (!(!threwError && err.lineNumber && err.fileName && err.stack && err.message && err.name)) {
    var message = err.message;
    if (null == message) {
      if (err.constructor && err.constructor instanceof Function) {
        var ctorName = err.constructor.name ? err.constructor.name : goog.debug.getFunctionName(err.constructor);
        message = 'Unknown Error of type "' + ctorName + '"';
        if (goog.debug.CHECK_FOR_THROWN_EVENT && "Event" == ctorName) {
          try {
            message = message + ' with Event.type "' + (err.type || "") + '"';
          } catch (e) {
          }
        }
      } else {
        message = "Unknown Error of unknown type";
      }
      "function" === typeof err.toString && Object.prototype.toString !== err.toString && (message += ": " + err.toString());
    }
    return {message:message, name:err.name || "UnknownError", lineNumber:lineNumber, fileName:fileName, stack:stack || "Not available"};
  }
  return {message:err.message, name:err.name, lineNumber:err.lineNumber, fileName:err.fileName, stack:stack};
};
goog.debug.serializeErrorStack_ = function(e, seen) {
  seen || (seen = {});
  seen[goog.debug.serializeErrorAsKey_(e)] = !0;
  var stack = e.stack || "", cause = e.cause;
  cause && !seen[goog.debug.serializeErrorAsKey_(cause)] && (stack += "\nCaused by: ", cause.stack && 0 == cause.stack.indexOf(cause.toString()) || (stack += "string" === typeof cause ? cause : cause.message + "\n"), stack += goog.debug.serializeErrorStack_(cause, seen));
  return stack;
};
goog.debug.serializeErrorAsKey_ = function(e) {
  var keyPrefix = "";
  "function" === typeof e.toString && (keyPrefix = "" + e);
  return keyPrefix + e.stack;
};
goog.debug.enhanceError = function(err, opt_message) {
  if (err instanceof Error) {
    var error = err;
  } else {
    error = Error(err), Error.captureStackTrace && Error.captureStackTrace(error, goog.debug.enhanceError);
  }
  error.stack || (error.stack = goog.debug.getStacktrace(goog.debug.enhanceError));
  if (opt_message) {
    for (var x = 0; error["message" + x];) {
      ++x;
    }
    error["message" + x] = String(opt_message);
  }
  return error;
};
goog.debug.enhanceErrorWithContext = function(err, opt_context) {
  var error = goog.debug.enhanceError(err);
  if (opt_context) {
    for (var key in opt_context) {
      goog.debug.errorcontext.addErrorContext(error, key, opt_context[key]);
    }
  }
  return error;
};
goog.debug.getStacktraceSimple = function(opt_depth) {
  if (!goog.debug.FORCE_SLOPPY_STACKS) {
    var stack = goog.debug.getNativeStackTrace_(goog.debug.getStacktraceSimple);
    if (stack) {
      return stack;
    }
  }
  for (var sb = [], fn = arguments.callee.caller, depth = 0; fn && (!opt_depth || depth < opt_depth);) {
    sb.push(goog.debug.getFunctionName(fn));
    sb.push("()\n");
    try {
      fn = fn.caller;
    } catch (e) {
      sb.push("[exception trying to get caller]\n");
      break;
    }
    depth++;
    if (depth >= goog.debug.MAX_STACK_DEPTH) {
      sb.push("[...long stack...]");
      break;
    }
  }
  opt_depth && depth >= opt_depth ? sb.push("[...reached max depth limit...]") : sb.push("[end]");
  return sb.join("");
};
goog.debug.MAX_STACK_DEPTH = 50;
goog.debug.getNativeStackTrace_ = function(fn) {
  var tempErr = Error();
  if (Error.captureStackTrace) {
    return Error.captureStackTrace(tempErr, fn), String(tempErr.stack);
  }
  try {
    throw tempErr;
  } catch (e) {
    tempErr = e;
  }
  var stack = tempErr.stack;
  return stack ? String(stack) : null;
};
goog.debug.getStacktrace = function(fn) {
  var stack;
  goog.debug.FORCE_SLOPPY_STACKS || (stack = goog.debug.getNativeStackTrace_(fn || goog.debug.getStacktrace));
  stack || (stack = goog.debug.getStacktraceHelper_(fn || arguments.callee.caller, []));
  return stack;
};
goog.debug.getStacktraceHelper_ = function(fn, visited) {
  var sb = [];
  if (module$contents$goog$array_contains(visited, fn)) {
    sb.push("[...circular reference...]");
  } else if (fn && visited.length < goog.debug.MAX_STACK_DEPTH) {
    sb.push(goog.debug.getFunctionName(fn) + "(");
    for (var args = fn.arguments, i = 0; args && i < args.length; i++) {
      0 < i && sb.push(", ");
      var arg = args[i];
      switch(typeof arg) {
        case "object":
          var argDesc = arg ? "object" : "null";
          break;
        case "string":
          argDesc = arg;
          break;
        case "number":
          argDesc = String(arg);
          break;
        case "boolean":
          argDesc = arg ? "true" : "false";
          break;
        case "function":
          argDesc = (argDesc = goog.debug.getFunctionName(arg)) ? argDesc : "[fn]";
          break;
        default:
          argDesc = typeof arg;
      }
      40 < argDesc.length && (argDesc = argDesc.slice(0, 40) + "...");
      sb.push(argDesc);
    }
    visited.push(fn);
    sb.push(")\n");
    try {
      sb.push(goog.debug.getStacktraceHelper_(fn.caller, visited));
    } catch (e) {
      sb.push("[exception trying to get caller]\n");
    }
  } else {
    fn ? sb.push("[...long stack...]") : sb.push("[end]");
  }
  return sb.join("");
};
goog.debug.getFunctionName = function(fn) {
  if (goog.debug.fnNameCache_[fn]) {
    return goog.debug.fnNameCache_[fn];
  }
  var functionSource = String(fn);
  if (!goog.debug.fnNameCache_[functionSource]) {
    var matches = /function\s+([^\(]+)/m.exec(functionSource);
    goog.debug.fnNameCache_[functionSource] = matches ? matches[1] : "[Anonymous]";
  }
  return goog.debug.fnNameCache_[functionSource];
};
goog.debug.makeWhitespaceVisible = function(string) {
  return string.replace(/ /g, "[_]").replace(/\f/g, "[f]").replace(/\n/g, "[n]\n").replace(/\r/g, "[r]").replace(/\t/g, "[t]");
};
goog.debug.runtimeType = function(value) {
  return value instanceof Function ? value.displayName || value.name || "unknown type name" : value instanceof Object ? value.constructor.displayName || value.constructor.name || Object.prototype.toString.call(value) : null === value ? "null" : typeof value;
};
goog.debug.fnNameCache_ = {};
goog.debug.freezeInternal_ = goog.DEBUG && Object.freeze || function(arg) {
  return arg;
};
goog.debug.freeze = function(arg) {
  return function() {
    return goog.debug.freezeInternal_(arg);
  }();
};
goog.log = {};
goog.log.ENABLED = goog.debug.LOGGING_ENABLED;
goog.log.ROOT_LOGGER_NAME = "";
var third_party$javascript$closure$log$log$classdecl$var0 = function(name, value) {
  this.name = name;
  this.value = value;
};
third_party$javascript$closure$log$log$classdecl$var0.prototype.toString = function() {
  return this.name;
};
goog.log.Level = third_party$javascript$closure$log$log$classdecl$var0;
goog.log.Level.OFF = new goog.log.Level("OFF", Infinity);
goog.log.Level.SHOUT = new goog.log.Level("SHOUT", 1200);
goog.log.Level.SEVERE = new goog.log.Level("SEVERE", 1E3);
goog.log.Level.WARNING = new goog.log.Level("WARNING", 900);
goog.log.Level.INFO = new goog.log.Level("INFO", 800);
goog.log.Level.CONFIG = new goog.log.Level("CONFIG", 700);
goog.log.Level.FINE = new goog.log.Level("FINE", 500);
goog.log.Level.FINER = new goog.log.Level("FINER", 400);
goog.log.Level.FINEST = new goog.log.Level("FINEST", 300);
goog.log.Level.ALL = new goog.log.Level("ALL", 0);
goog.log.Level.PREDEFINED_LEVELS = [goog.log.Level.OFF, goog.log.Level.SHOUT, goog.log.Level.SEVERE, goog.log.Level.WARNING, goog.log.Level.INFO, goog.log.Level.CONFIG, goog.log.Level.FINE, goog.log.Level.FINER, goog.log.Level.FINEST, goog.log.Level.ALL];
goog.log.Level.predefinedLevelsCache_ = null;
goog.log.Level.createPredefinedLevelsCache_ = function() {
  goog.log.Level.predefinedLevelsCache_ = {};
  for (var i = 0, level = void 0; level = goog.log.Level.PREDEFINED_LEVELS[i]; i++) {
    goog.log.Level.predefinedLevelsCache_[level.value] = level, goog.log.Level.predefinedLevelsCache_[level.name] = level;
  }
};
goog.log.Level.getPredefinedLevel = function(name) {
  goog.log.Level.predefinedLevelsCache_ || goog.log.Level.createPredefinedLevelsCache_();
  return goog.log.Level.predefinedLevelsCache_[name] || null;
};
goog.log.Level.getPredefinedLevelByValue = function(value) {
  goog.log.Level.predefinedLevelsCache_ || goog.log.Level.createPredefinedLevelsCache_();
  if (value in goog.log.Level.predefinedLevelsCache_) {
    return goog.log.Level.predefinedLevelsCache_[value];
  }
  for (var i = 0; i < goog.log.Level.PREDEFINED_LEVELS.length; ++i) {
    var level = goog.log.Level.PREDEFINED_LEVELS[i];
    if (level.value <= value) {
      return level;
    }
  }
  return null;
};
var third_party$javascript$closure$log$log$classdecl$var1 = function() {
};
third_party$javascript$closure$log$log$classdecl$var1.prototype.getName = function() {
};
goog.log.Logger = third_party$javascript$closure$log$log$classdecl$var1;
goog.log.Logger.Level = goog.log.Level;
var third_party$javascript$closure$log$log$classdecl$var2 = function(capacity) {
  this.capacity_ = "number" === typeof capacity ? capacity : goog.log.LogBuffer.CAPACITY;
  this.clear();
};
third_party$javascript$closure$log$log$classdecl$var2.prototype.addRecord = function(level, msg, loggerName) {
  if (!this.isBufferingEnabled()) {
    return new goog.log.LogRecord(level, msg, loggerName);
  }
  var curIndex = (this.curIndex_ + 1) % this.capacity_;
  this.curIndex_ = curIndex;
  if (this.isFull_) {
    var ret = this.buffer_[curIndex];
    ret.reset(level, msg, loggerName);
    return ret;
  }
  this.isFull_ = curIndex == this.capacity_ - 1;
  return this.buffer_[curIndex] = new goog.log.LogRecord(level, msg, loggerName);
};
third_party$javascript$closure$log$log$classdecl$var2.prototype.forEachRecord = function(func) {
  var buffer = this.buffer_;
  if (buffer[0]) {
    var curIndex = this.curIndex_, i = this.isFull_ ? curIndex : -1;
    do {
      i = (i + 1) % this.capacity_, func(buffer[i]);
    } while (i !== curIndex);
  }
};
third_party$javascript$closure$log$log$classdecl$var2.prototype.isBufferingEnabled = function() {
  return 0 < this.capacity_;
};
third_party$javascript$closure$log$log$classdecl$var2.prototype.isFull = function() {
  return this.isFull_;
};
third_party$javascript$closure$log$log$classdecl$var2.prototype.clear = function() {
  this.buffer_ = Array(this.capacity_);
  this.curIndex_ = -1;
  this.isFull_ = !1;
};
goog.log.LogBuffer = third_party$javascript$closure$log$log$classdecl$var2;
goog.log.LogBuffer.CAPACITY = 0;
goog.log.LogBuffer.getInstance = function() {
  goog.log.LogBuffer.instance_ || (goog.log.LogBuffer.instance_ = new goog.log.LogBuffer(goog.log.LogBuffer.CAPACITY));
  return goog.log.LogBuffer.instance_;
};
goog.log.LogBuffer.isBufferingEnabled = function() {
  return goog.log.LogBuffer.getInstance().isBufferingEnabled();
};
var third_party$javascript$closure$log$log$classdecl$var3 = function(level, msg, loggerName, time, sequenceNumber) {
  this.exception_ = void 0;
  this.reset(level || goog.log.Level.OFF, msg, loggerName, time, sequenceNumber);
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.reset = function(level, msg, loggerName, time, sequenceNumber) {
  this.time_ = time || goog.now();
  this.level_ = level;
  this.msg_ = msg;
  this.loggerName_ = loggerName;
  this.exception_ = void 0;
  this.sequenceNumber_ = "number" === typeof sequenceNumber ? sequenceNumber : goog.log.LogRecord.nextSequenceNumber_;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.getLoggerName = function() {
  return this.loggerName_;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.setLoggerName = function(name) {
  this.loggerName_ = name;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.getException = function() {
  return this.exception_;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.setException = function(exception) {
  this.exception_ = exception;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.getLevel = function() {
  return this.level_;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.setLevel = function(level) {
  this.level_ = level;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.getMessage = function() {
  return this.msg_;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.setMessage = function(msg) {
  this.msg_ = msg;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.getMillis = function() {
  return this.time_;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.setMillis = function(time) {
  this.time_ = time;
};
third_party$javascript$closure$log$log$classdecl$var3.prototype.getSequenceNumber = function() {
  return this.sequenceNumber_;
};
goog.log.LogRecord = third_party$javascript$closure$log$log$classdecl$var3;
goog.log.LogRecord.nextSequenceNumber_ = 0;
var third_party$javascript$closure$log$log$classdecl$var4 = function(name, parent) {
  this.level = null;
  this.handlers = [];
  this.parent = (void 0 === parent ? null : parent) || null;
  this.children = [];
  this.logger = {getName:function() {
    return name;
  }};
};
third_party$javascript$closure$log$log$classdecl$var4.prototype.getEffectiveLevel = function() {
  if (this.level) {
    return this.level;
  }
  if (this.parent) {
    return this.parent.getEffectiveLevel();
  }
  goog.asserts.fail("Root logger has no level set.");
  return goog.log.Level.OFF;
};
third_party$javascript$closure$log$log$classdecl$var4.prototype.publish = function(logRecord) {
  for (var target = this; target;) {
    target.handlers.forEach(function(handler) {
      handler(logRecord);
    }), target = target.parent;
  }
};
goog.log.LogRegistryEntry_ = third_party$javascript$closure$log$log$classdecl$var4;
var third_party$javascript$closure$log$log$classdecl$var5 = function() {
  this.entries = {};
  var rootLogRegistryEntry = new goog.log.LogRegistryEntry_(goog.log.ROOT_LOGGER_NAME);
  rootLogRegistryEntry.level = goog.log.Level.CONFIG;
  this.entries[goog.log.ROOT_LOGGER_NAME] = rootLogRegistryEntry;
};
third_party$javascript$closure$log$log$classdecl$var5.prototype.getLogRegistryEntry = function(name, level) {
  var entry = this.entries[name];
  if (entry) {
    return void 0 !== level && (entry.level = level), entry;
  }
  var lastDotIndex = name.lastIndexOf("."), parentName = name.slice(0, Math.max(lastDotIndex, 0)), parentLogRegistryEntry = this.getLogRegistryEntry(parentName), logRegistryEntry = new goog.log.LogRegistryEntry_(name, parentLogRegistryEntry);
  this.entries[name] = logRegistryEntry;
  parentLogRegistryEntry.children.push(logRegistryEntry);
  void 0 !== level && (logRegistryEntry.level = level);
  return logRegistryEntry;
};
third_party$javascript$closure$log$log$classdecl$var5.prototype.getAllLoggers = function() {
  var $jscomp$this$17096019$34 = this;
  return Object.keys(this.entries).map(function(loggerName) {
    return $jscomp$this$17096019$34.entries[loggerName].logger;
  });
};
goog.log.LogRegistry_ = third_party$javascript$closure$log$log$classdecl$var5;
goog.log.LogRegistry_.getInstance = function() {
  goog.log.LogRegistry_.instance_ || (goog.log.LogRegistry_.instance_ = new goog.log.LogRegistry_());
  return goog.log.LogRegistry_.instance_;
};
goog.log.getLogger = function(name, level) {
  return goog.log.ENABLED ? goog.log.LogRegistry_.getInstance().getLogRegistryEntry(name, level).logger : null;
};
goog.log.getRootLogger = function() {
  return goog.log.ENABLED ? goog.log.LogRegistry_.getInstance().getLogRegistryEntry(goog.log.ROOT_LOGGER_NAME).logger : null;
};
goog.log.addHandler = function(logger, handler) {
  goog.log.ENABLED && logger && goog.log.LogRegistry_.getInstance().getLogRegistryEntry(logger.getName()).handlers.push(handler);
};
goog.log.removeHandler = function(logger, handler) {
  if (goog.log.ENABLED && logger) {
    var loggerEntry = goog.log.LogRegistry_.getInstance().getLogRegistryEntry(logger.getName()), indexOfHandler = loggerEntry.handlers.indexOf(handler);
    if (-1 !== indexOfHandler) {
      return loggerEntry.handlers.splice(indexOfHandler, 1), !0;
    }
  }
  return !1;
};
goog.log.setLevel = function(logger, level) {
  goog.log.ENABLED && logger && (goog.log.LogRegistry_.getInstance().getLogRegistryEntry(logger.getName()).level = level);
};
goog.log.getLevel = function(logger) {
  return goog.log.ENABLED && logger ? goog.log.LogRegistry_.getInstance().getLogRegistryEntry(logger.getName()).level : null;
};
goog.log.getEffectiveLevel = function(logger) {
  return goog.log.ENABLED && logger ? goog.log.LogRegistry_.getInstance().getLogRegistryEntry(logger.getName()).getEffectiveLevel() : goog.log.Level.OFF;
};
goog.log.isLoggable = function(logger, level) {
  return goog.log.ENABLED && logger && level ? level.value >= goog.log.getEffectiveLevel(logger).value : !1;
};
goog.log.getAllLoggers = function() {
  return goog.log.ENABLED ? goog.log.LogRegistry_.getInstance().getAllLoggers() : [];
};
goog.log.getLogRecord = function(logger, level, msg, exception) {
  var logRecord = goog.log.LogBuffer.getInstance().addRecord(level || goog.log.Level.OFF, msg, logger.getName());
  logRecord.setException(exception);
  return logRecord;
};
goog.log.publishLogRecord = function(logger, logRecord) {
  goog.log.ENABLED && logger && goog.log.isLoggable(logger, logRecord.getLevel()) && goog.log.LogRegistry_.getInstance().getLogRegistryEntry(logger.getName()).publish(logRecord);
};
goog.log.log = function(logger, level, msg, exception) {
  if (goog.log.ENABLED && logger && goog.log.isLoggable(logger, level)) {
    level = level || goog.log.Level.OFF;
    var loggerEntry = goog.log.LogRegistry_.getInstance().getLogRegistryEntry(logger.getName());
    "function" === typeof msg && (msg = msg());
    var logRecord = goog.log.LogBuffer.getInstance().addRecord(level, msg, logger.getName());
    logRecord.setException(exception);
    loggerEntry.publish(logRecord);
  }
};
goog.log.error = function(logger, msg, exception) {
  goog.log.ENABLED && logger && goog.log.log(logger, goog.log.Level.SEVERE, msg, exception);
};
goog.log.warning = function(logger, msg, exception) {
  goog.log.ENABLED && logger && goog.log.log(logger, goog.log.Level.WARNING, msg, exception);
};
goog.log.info = function(logger, msg, exception) {
  goog.log.ENABLED && logger && goog.log.log(logger, goog.log.Level.INFO, msg, exception);
};
goog.log.fine = function(logger, msg, exception) {
  goog.log.ENABLED && logger && goog.log.log(logger, goog.log.Level.FINE, msg, exception);
};
var module$exports$safevalues$dom$elements$svg_use = {}, module$contents$safevalues$dom$elements$svg_use_module = module$contents$safevalues$dom$elements$svg_use_module || {id:"third_party/javascript/safevalues/dom/elements/svg_use.closure.js"};
module$exports$safevalues$dom$elements$svg_use.setHref = function(useEl, url) {
  var scheme = module$contents$safevalues$builders$url_builders_extractScheme(url);
  if ("javascript:" === scheme || "data:" === scheme) {
    if (goog.DEBUG) {
      var msg = "A URL with content '" + url + "' was sanitized away.";
      (0,goog.log.warning)((0,goog.log.getLogger)("safevalues"), msg);
    }
  } else {
    useEl.setAttribute("href", url);
  }
};
var module$exports$safevalues$dom$globals$document = {}, module$contents$safevalues$dom$globals$document_module = module$contents$safevalues$dom$globals$document_module || {id:"third_party/javascript/safevalues/dom/globals/document.closure.js"};
module$exports$safevalues$dom$globals$document.write = function(doc, text) {
  doc.write((0,module$exports$safevalues$internals$html_impl.unwrapHtml)(text));
};
var module$contents$safevalues$dom$globals$document_ValueType;
module$exports$safevalues$dom$globals$document.execCommand = function(doc, command, value) {
  var commandString = String(command), valueArgument = value;
  "inserthtml" === commandString.toLowerCase() && (valueArgument = (0,module$exports$safevalues$internals$html_impl.unwrapHtml)(value));
  return doc.execCommand(commandString, !1, valueArgument);
};
module$exports$safevalues$dom$globals$document.execCommandInsertHtml = function(doc, html) {
  return doc.execCommand("insertHTML", !1, (0,module$exports$safevalues$internals$html_impl.unwrapHtml)(html));
};
var module$exports$safevalues$dom$globals$dom_parser = {}, module$contents$safevalues$dom$globals$dom_parser_module = module$contents$safevalues$dom$globals$dom_parser_module || {id:"third_party/javascript/safevalues/dom/globals/dom_parser.closure.js"};
module$exports$safevalues$dom$globals$dom_parser.parseHtml = function(parser, html) {
  return module$contents$safevalues$dom$globals$dom_parser_parseFromString(parser, html, "text/html");
};
module$exports$safevalues$dom$globals$dom_parser.parseXml = function(parser, xml) {
  for (var doc = module$contents$safevalues$dom$globals$dom_parser_parseFromString(parser, (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(xml), "text/xml"), iterator = document.createNodeIterator(doc, NodeFilter.SHOW_ALL, null, !1), currentNode; currentNode = iterator.nextNode();) {
    if (currentNode instanceof HTMLElement || currentNode instanceof SVGElement) {
      var message = "unsafe XML";
      goog.DEBUG && (message = "attempted to parse an XML document that embeds HTML or SVG content");
      throw Error(message);
    }
  }
  return doc;
};
function module$contents$safevalues$dom$globals$dom_parser_parseFromString(parser, content, contentType) {
  return parser.parseFromString((0,module$exports$safevalues$internals$html_impl.unwrapHtml)(content), contentType);
}
module$exports$safevalues$dom$globals$dom_parser.parseFromString = module$contents$safevalues$dom$globals$dom_parser_parseFromString;
var module$exports$safevalues$dom$globals$fetch = {}, module$contents$safevalues$dom$globals$fetch_module = module$contents$safevalues$dom$globals$fetch_module || {id:"third_party/javascript/safevalues/dom/globals/fetch.closure.js"};
module$exports$safevalues$dom$globals$fetch.IncorrectContentTypeError = function(url, typeName, contentType) {
  var $jscomp$tmp$error$1153895636$4 = Error.call(this, url + " was requested as a " + typeName + ', but the response Content-Type, "' + contentType + " is not appropriate for this type of content.");
  this.message = $jscomp$tmp$error$1153895636$4.message;
  "stack" in $jscomp$tmp$error$1153895636$4 && (this.stack = $jscomp$tmp$error$1153895636$4.stack);
  this.url = url;
  this.typeName = typeName;
  this.contentType = contentType;
};
$jscomp.inherits(module$exports$safevalues$dom$globals$fetch.IncorrectContentTypeError, Error);
module$exports$safevalues$dom$globals$fetch.SafeResponse = function() {
};
function module$contents$safevalues$dom$globals$fetch_privatecreateHtmlInternal(html) {
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(html);
}
function module$contents$safevalues$dom$globals$fetch_fetchResourceUrl(u, init) {
  var response, $jscomp$optchain$tmp1153895636$0, $jscomp$optchain$tmp1153895636$1, $jscomp$optchain$tmp1153895636$2, mimeType;
  return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$1153895636$8) {
    if (1 == $jscomp$generator$context$1153895636$8.nextAddress) {
      return $jscomp$generator$context$1153895636$8.yield(fetch(module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(u).toString(), init), 2);
    }
    response = $jscomp$generator$context$1153895636$8.yieldResult;
    mimeType = null == ($jscomp$optchain$tmp1153895636$0 = response.headers.get("Content-Type")) ? void 0 : null == ($jscomp$optchain$tmp1153895636$1 = $jscomp$optchain$tmp1153895636$0.split(";", 2)) ? void 0 : null == ($jscomp$optchain$tmp1153895636$2 = $jscomp$optchain$tmp1153895636$1[0]) ? void 0 : $jscomp$optchain$tmp1153895636$2.toLowerCase();
    return $jscomp$generator$context$1153895636$8.return({html:function() {
      var text;
      return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$1153895636$5) {
        if (1 == $jscomp$generator$context$1153895636$5.nextAddress) {
          if ("text/html" !== mimeType) {
            throw new module$exports$safevalues$dom$globals$fetch.IncorrectContentTypeError(response.url, "SafeHtml", "text/html");
          }
          return $jscomp$generator$context$1153895636$5.yield(response.text(), 2);
        }
        text = $jscomp$generator$context$1153895636$5.yieldResult;
        return $jscomp$generator$context$1153895636$5.return(module$contents$safevalues$dom$globals$fetch_privatecreateHtmlInternal(text));
      });
    }, script:function() {
      var text;
      return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$1153895636$6) {
        if (1 == $jscomp$generator$context$1153895636$6.nextAddress) {
          if ("text/javascript" !== mimeType && "application/javascript" !== mimeType) {
            throw new module$exports$safevalues$dom$globals$fetch.IncorrectContentTypeError(response.url, "SafeScript", "text/javascript");
          }
          return $jscomp$generator$context$1153895636$6.yield(response.text(), 2);
        }
        text = $jscomp$generator$context$1153895636$6.yieldResult;
        return $jscomp$generator$context$1153895636$6.return(module$contents$safevalues$internals$script_impl_createScriptInternal(text));
      });
    }, styleSheet:function() {
      var text;
      return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$1153895636$7) {
        if (1 == $jscomp$generator$context$1153895636$7.nextAddress) {
          if ("text/css" !== mimeType) {
            throw new module$exports$safevalues$dom$globals$fetch.IncorrectContentTypeError(response.url, "SafeStyleSheet", "text/css");
          }
          return $jscomp$generator$context$1153895636$7.yield(response.text(), 2);
        }
        text = $jscomp$generator$context$1153895636$7.yieldResult;
        return $jscomp$generator$context$1153895636$7.return(module$contents$safevalues$internals$style_sheet_impl_createStyleSheetInternal(text));
      });
    }});
  });
}
module$exports$safevalues$dom$globals$fetch.fetchResourceUrl = module$contents$safevalues$dom$globals$fetch_fetchResourceUrl;
var module$exports$safevalues$dom$globals$global = {}, module$contents$safevalues$dom$globals$global_module = module$contents$safevalues$dom$globals$global_module || {id:"third_party/javascript/safevalues/dom/globals/global.closure.js"};
module$exports$safevalues$dom$globals$global.fetchResourceUrl = module$contents$safevalues$dom$globals$fetch_fetchResourceUrl;
module$exports$safevalues$dom$globals$global.globalEval = function(win, script) {
  var trustedScript = module$contents$safevalues$internals$script_impl_unwrapScript(script), result = win.eval(trustedScript);
  result === trustedScript && (result = win.eval(trustedScript.toString()));
  return result;
};
var module$exports$safevalues$dom$globals$location = {}, module$contents$safevalues$dom$globals$location_module = module$contents$safevalues$dom$globals$location_module || {id:"third_party/javascript/safevalues/dom/globals/location.closure.js"};
module$exports$safevalues$dom$globals$location.setHref = function(loc, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && (loc.href = sanitizedUrl);
};
module$exports$safevalues$dom$globals$location.replace = function(loc, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && loc.replace(sanitizedUrl);
};
module$exports$safevalues$dom$globals$location.assign = function(loc, url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  void 0 !== sanitizedUrl && loc.assign(sanitizedUrl);
};
var module$exports$safevalues$dom$globals$range = {}, module$contents$safevalues$dom$globals$range_module = module$contents$safevalues$dom$globals$range_module || {id:"third_party/javascript/safevalues/dom/globals/range.closure.js"};
module$exports$safevalues$dom$globals$range.createContextualFragment = function(range, html) {
  return range.createContextualFragment((0,module$exports$safevalues$internals$html_impl.unwrapHtml)(html));
};
var module$exports$safevalues$dom$globals$service_worker_container = {}, module$contents$safevalues$dom$globals$service_worker_container_module = module$contents$safevalues$dom$globals$service_worker_container_module || {id:"third_party/javascript/safevalues/dom/globals/service_worker_container.closure.js"};
module$exports$safevalues$dom$globals$service_worker_container.register = function(container, scriptURL, options) {
  return container.register(module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(scriptURL), options);
};
var module$exports$safevalues$dom$globals$url = {}, module$contents$safevalues$dom$globals$url_module = module$contents$safevalues$dom$globals$url_module || {id:"third_party/javascript/safevalues/dom/globals/url.closure.js"};
module$exports$safevalues$dom$globals$url.objectUrlFromSafeSource = function(source) {
  return module$contents$safevalues$builders$url_builders_objectUrlFromSafeSource(source).toString();
};
var module$exports$safevalues$dom$globals$worker = {}, module$contents$safevalues$dom$globals$worker_module = module$contents$safevalues$dom$globals$worker_module || {id:"third_party/javascript/safevalues/dom/globals/worker.closure.js"};
module$exports$safevalues$dom$globals$worker.ScopeWithImportScripts = function() {
};
module$exports$safevalues$dom$globals$worker.create = function(url, options) {
  return new Worker(module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(url), options);
};
module$exports$safevalues$dom$globals$worker.createShared = function(url, options) {
  return new SharedWorker(module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(url), options);
};
module$exports$safevalues$dom$globals$worker.importScripts = function(scope) {
  scope.importScripts.apply(scope, $jscomp.arrayFromIterable($jscomp.getRestArguments.apply(1, arguments).map(function(url) {
    return module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(url);
  })));
};
var module$exports$safevalues$dom$index = {}, module$contents$safevalues$dom$index_module = module$contents$safevalues$dom$index_module || {id:"third_party/javascript/safevalues/dom/index.closure.js"};
module$exports$safevalues$dom$index.safeAnchorEl = module$exports$safevalues$dom$elements$anchor;
module$exports$safevalues$dom$index.safeAreaEl = module$exports$safevalues$dom$elements$area;
module$exports$safevalues$dom$index.safeBaseEl = module$exports$safevalues$dom$elements$base;
module$exports$safevalues$dom$index.safeButtonEl = module$exports$safevalues$dom$elements$button;
module$exports$safevalues$dom$index.safeElement = module$exports$safevalues$dom$elements$element;
module$exports$safevalues$dom$index.safeEmbedEl = module$exports$safevalues$dom$elements$embed;
module$exports$safevalues$dom$index.safeFormEl = module$exports$safevalues$dom$elements$form;
module$exports$safevalues$dom$index.safeIframeEl = module$exports$safevalues$dom$elements$iframe;
module$exports$safevalues$dom$index.safeInputEl = module$exports$safevalues$dom$elements$input;
module$exports$safevalues$dom$index.safeLinkEl = module$exports$safevalues$dom$elements$link;
module$exports$safevalues$dom$index.safeObjectEl = module$exports$safevalues$dom$elements$object;
module$exports$safevalues$dom$index.safeScriptEl = module$exports$safevalues$dom$elements$script;
module$exports$safevalues$dom$index.safeStyleEl = module$exports$safevalues$dom$elements$style;
module$exports$safevalues$dom$index.safeSvgEl = module$exports$safevalues$dom$elements$svg;
module$exports$safevalues$dom$index.safeSvgUseEl = module$exports$safevalues$dom$elements$svg_use;
module$exports$safevalues$dom$index.safeDocument = module$exports$safevalues$dom$globals$document;
module$exports$safevalues$dom$index.safeDomParser = module$exports$safevalues$dom$globals$dom_parser;
module$exports$safevalues$dom$index.safeGlobal = module$exports$safevalues$dom$globals$global;
module$exports$safevalues$dom$index.safeLocation = module$exports$safevalues$dom$globals$location;
module$exports$safevalues$dom$index.safeRange = module$exports$safevalues$dom$globals$range;
module$exports$safevalues$dom$index.safeServiceWorkerContainer = module$exports$safevalues$dom$globals$service_worker_container;
module$exports$safevalues$dom$index.safeUrl = module$exports$safevalues$dom$globals$url;
module$exports$safevalues$dom$index.safeWindow = module$exports$safevalues$dom$globals$window;
module$exports$safevalues$dom$index.safeWorker = module$exports$safevalues$dom$globals$worker;
var safevalues = {dom:{}};
safevalues.dom.safeAnchorEl = module$exports$safevalues$dom$elements$anchor;
safevalues.dom.safeAreaEl = module$exports$safevalues$dom$elements$area;
safevalues.dom.safeBaseEl = module$exports$safevalues$dom$elements$base;
safevalues.dom.safeButtonEl = module$exports$safevalues$dom$elements$button;
safevalues.dom.safeElement = module$exports$safevalues$dom$elements$element;
safevalues.dom.safeEmbedEl = module$exports$safevalues$dom$elements$embed;
safevalues.dom.safeFormEl = module$exports$safevalues$dom$elements$form;
safevalues.dom.safeIframeEl = module$exports$safevalues$dom$elements$iframe;
safevalues.dom.safeInputEl = module$exports$safevalues$dom$elements$input;
safevalues.dom.safeLinkEl = module$exports$safevalues$dom$elements$link;
safevalues.dom.safeObjectEl = module$exports$safevalues$dom$elements$object;
safevalues.dom.safeScriptEl = module$exports$safevalues$dom$elements$script;
safevalues.dom.safeStyleEl = module$exports$safevalues$dom$elements$style;
safevalues.dom.safeSvgEl = module$exports$safevalues$dom$elements$svg;
safevalues.dom.safeSvgUseEl = module$exports$safevalues$dom$elements$svg_use;
safevalues.dom.safeDocument = module$exports$safevalues$dom$globals$document;
safevalues.dom.safeDomParser = module$exports$safevalues$dom$globals$dom_parser;
safevalues.dom.safeGlobal = module$exports$safevalues$dom$globals$global;
safevalues.dom.safeLocation = module$exports$safevalues$dom$globals$location;
safevalues.dom.safeRange = module$exports$safevalues$dom$globals$range;
safevalues.dom.safeServiceWorkerContainer = module$exports$safevalues$dom$globals$service_worker_container;
safevalues.dom.safeUrl = module$exports$safevalues$dom$globals$url;
safevalues.dom.safeWindow = module$exports$safevalues$dom$globals$window;
safevalues.dom.safeWorker = module$exports$safevalues$dom$globals$worker;
var module$exports$safevalues$restricted$reviewed = {}, module$contents$safevalues$restricted$reviewed_module = module$contents$safevalues$restricted$reviewed_module || {id:"third_party/javascript/safevalues/restricted/reviewed.closure.js"};
function module$contents$safevalues$restricted$reviewed_assertValidJustification(justification) {
  if ("string" !== typeof justification || "" === justification.trim()) {
    var errMsg;
    throw Error("Calls to uncheckedconversion functions must go through security review. A justification must be provided to capture what security assumptions are being made. See go/unchecked-conversions");
  }
}
function module$contents$safevalues$restricted$reviewed_htmlSafeByReview(html, options) {
  goog.DEBUG && module$contents$safevalues$restricted$reviewed_assertValidJustification(options.justification);
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(html);
}
module$exports$safevalues$restricted$reviewed.htmlSafeByReview = module$contents$safevalues$restricted$reviewed_htmlSafeByReview;
function module$contents$safevalues$restricted$reviewed_scriptSafeByReview(script, options) {
  goog.DEBUG && module$contents$safevalues$restricted$reviewed_assertValidJustification(options.justification);
  return module$contents$safevalues$internals$script_impl_createScriptInternal(script);
}
module$exports$safevalues$restricted$reviewed.scriptSafeByReview = module$contents$safevalues$restricted$reviewed_scriptSafeByReview;
function module$contents$safevalues$restricted$reviewed_resourceUrlSafeByReview(url, options) {
  goog.DEBUG && module$contents$safevalues$restricted$reviewed_assertValidJustification(options.justification);
  return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(url);
}
module$exports$safevalues$restricted$reviewed.resourceUrlSafeByReview = module$contents$safevalues$restricted$reviewed_resourceUrlSafeByReview;
function module$contents$safevalues$restricted$reviewed_styleSheetSafeByReview(stylesheet, options) {
  goog.DEBUG && module$contents$safevalues$restricted$reviewed_assertValidJustification(options.justification);
  return module$contents$safevalues$internals$style_sheet_impl_createStyleSheetInternal(stylesheet);
}
module$exports$safevalues$restricted$reviewed.styleSheetSafeByReview = module$contents$safevalues$restricted$reviewed_styleSheetSafeByReview;
function module$contents$safevalues$restricted$reviewed_urlSafeByReview(url, options) {
  goog.DEBUG && module$contents$safevalues$restricted$reviewed_assertValidJustification(options.justification);
  return module$contents$safevalues$internals$url_impl_createUrlInternal(url);
}
module$exports$safevalues$restricted$reviewed.urlSafeByReview = module$contents$safevalues$restricted$reviewed_urlSafeByReview;
function module$contents$safevalues$restricted$reviewed_styleSafeByReview(style, options) {
  goog.DEBUG && module$contents$safevalues$restricted$reviewed_assertValidJustification(options.justification);
  return module$contents$safevalues$internals$style_impl_createStyleInternal(style);
}
module$exports$safevalues$restricted$reviewed.styleSafeByReview = module$contents$safevalues$restricted$reviewed_styleSafeByReview;
safevalues.restricted = {};
safevalues.restricted.reviewed = {};
safevalues.restricted.reviewed.htmlSafeByReview = module$contents$safevalues$restricted$reviewed_htmlSafeByReview;
safevalues.restricted.reviewed.scriptSafeByReview = module$contents$safevalues$restricted$reviewed_scriptSafeByReview;
safevalues.restricted.reviewed.resourceUrlSafeByReview = module$contents$safevalues$restricted$reviewed_resourceUrlSafeByReview;
safevalues.restricted.reviewed.styleSheetSafeByReview = module$contents$safevalues$restricted$reviewed_styleSheetSafeByReview;
safevalues.restricted.reviewed.urlSafeByReview = module$contents$safevalues$restricted$reviewed_urlSafeByReview;
safevalues.restricted.reviewed.styleSafeByReview = module$contents$safevalues$restricted$reviewed_styleSafeByReview;
goog.string.DETECT_DOUBLE_ESCAPING = !1;
goog.string.FORCE_NON_DOM_HTML_UNESCAPING = !1;
goog.string.Unicode = {NBSP:"\u00a0", ZERO_WIDTH_SPACE:"\u200b"};
goog.string.startsWith = goog.string.internal.startsWith;
goog.string.endsWith = goog.string.internal.endsWith;
goog.string.caseInsensitiveStartsWith = goog.string.internal.caseInsensitiveStartsWith;
goog.string.caseInsensitiveEndsWith = goog.string.internal.caseInsensitiveEndsWith;
goog.string.caseInsensitiveEquals = goog.string.internal.caseInsensitiveEquals;
goog.string.subs = function(str, var_args) {
  for (var splitParts = str.split("%s"), returnString = "", subsArguments = Array.prototype.slice.call(arguments, 1); subsArguments.length && 1 < splitParts.length;) {
    returnString += splitParts.shift() + subsArguments.shift();
  }
  return returnString + splitParts.join("%s");
};
goog.string.collapseWhitespace = function(str) {
  return str.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "");
};
goog.string.isEmptyOrWhitespace = goog.string.internal.isEmptyOrWhitespace;
goog.string.isEmptyString = function(str) {
  return 0 == str.length;
};
goog.string.isEmpty = goog.string.isEmptyOrWhitespace;
goog.string.isEmptyOrWhitespaceSafe = function(str) {
  return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(str));
};
goog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe;
goog.string.isBreakingWhitespace = function(str) {
  return !/[^\t\n\r ]/.test(str);
};
goog.string.isAlpha = function(str) {
  return !/[^a-zA-Z]/.test(str);
};
goog.string.isNumeric = function(str) {
  return !/[^0-9]/.test(str);
};
goog.string.isAlphaNumeric = function(str) {
  return !/[^a-zA-Z0-9]/.test(str);
};
goog.string.isSpace = function(ch) {
  return " " == ch;
};
goog.string.isUnicodeChar = function(ch) {
  return 1 == ch.length && " " <= ch && "~" >= ch || "\u0080" <= ch && "\ufffd" >= ch;
};
goog.string.stripNewlines = function(str) {
  return str.replace(/(\r\n|\r|\n)+/g, " ");
};
goog.string.canonicalizeNewlines = function(str) {
  return str.replace(/(\r\n|\r|\n)/g, "\n");
};
goog.string.normalizeWhitespace = function(str) {
  return str.replace(/\xa0|\s/g, " ");
};
goog.string.normalizeSpaces = function(str) {
  return str.replace(/\xa0|[ \t]+/g, " ");
};
goog.string.collapseBreakingSpaces = function(str) {
  return str.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "");
};
goog.string.trim = goog.string.internal.trim;
goog.string.trimLeft = function(str) {
  return str.replace(/^[\s\xa0]+/, "");
};
goog.string.trimRight = function(str) {
  return str.replace(/[\s\xa0]+$/, "");
};
goog.string.caseInsensitiveCompare = goog.string.internal.caseInsensitiveCompare;
goog.string.numberAwareCompare_ = function(str1, str2, tokenizerRegExp) {
  if (str1 == str2) {
    return 0;
  }
  if (!str1) {
    return -1;
  }
  if (!str2) {
    return 1;
  }
  for (var tokens1 = str1.toLowerCase().match(tokenizerRegExp), tokens2 = str2.toLowerCase().match(tokenizerRegExp), count = Math.min(tokens1.length, tokens2.length), i = 0; i < count; i++) {
    var a = tokens1[i], b = tokens2[i];
    if (a != b) {
      var num1 = parseInt(a, 10);
      if (!isNaN(num1)) {
        var num2 = parseInt(b, 10);
        if (!isNaN(num2) && num1 - num2) {
          return num1 - num2;
        }
      }
      return a < b ? -1 : 1;
    }
  }
  return tokens1.length != tokens2.length ? tokens1.length - tokens2.length : str1 < str2 ? -1 : 1;
};
goog.string.intAwareCompare = function(str1, str2) {
  return goog.string.numberAwareCompare_(str1, str2, /\d+|\D+/g);
};
goog.string.floatAwareCompare = function(str1, str2) {
  return goog.string.numberAwareCompare_(str1, str2, /\d+|\.\d+|\D+/g);
};
goog.string.numerateCompare = goog.string.floatAwareCompare;
goog.string.urlEncode = function(str) {
  return encodeURIComponent(String(str));
};
goog.string.urlDecode = function(str) {
  return decodeURIComponent(str.replace(/\+/g, " "));
};
goog.string.newLineToBr = goog.string.internal.newLineToBr;
goog.string.htmlEscape = function(str, opt_isLikelyToContainHtmlChars) {
  str = goog.string.internal.htmlEscape(str, opt_isLikelyToContainHtmlChars);
  goog.string.DETECT_DOUBLE_ESCAPING && (str = str.replace(goog.string.E_RE_, "&#101;"));
  return str;
};
goog.string.E_RE_ = /e/g;
goog.string.unescapeEntities = function(str) {
  return goog.string.contains(str, "&") ? !goog.string.FORCE_NON_DOM_HTML_UNESCAPING && "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(str) : goog.string.unescapePureXmlEntities_(str) : str;
};
goog.string.unescapeEntitiesWithDocument = function(str, document) {
  return goog.string.contains(str, "&") ? goog.string.unescapeEntitiesUsingDom_(str, document) : str;
};
goog.string.unescapeEntitiesUsingDom_ = function(str, opt_document) {
  var seen = {"&amp;":"&", "&lt;":"<", "&gt;":">", "&quot;":'"'};
  var div = opt_document ? opt_document.createElement("div") : goog.global.document.createElement("div");
  return str.replace(goog.string.HTML_ENTITY_PATTERN_, function(s, entity) {
    var value = seen[s];
    if (value) {
      return value;
    }
    if ("#" == entity.charAt(0)) {
      var n = Number("0" + entity.slice(1));
      isNaN(n) || (value = String.fromCharCode(n));
    }
    value || (module$exports$safevalues$dom$elements$element.setInnerHtml(div, module$contents$safevalues$restricted$reviewed_htmlSafeByReview(s + " ", {justification:"Single HTML entity."})), value = div.firstChild.nodeValue.slice(0, -1));
    return seen[s] = value;
  });
};
goog.string.unescapePureXmlEntities_ = function(str) {
  return str.replace(/&([^;]+);/g, function(s, entity) {
    switch(entity) {
      case "amp":
        return "&";
      case "lt":
        return "<";
      case "gt":
        return ">";
      case "quot":
        return '"';
      default:
        if ("#" == entity.charAt(0)) {
          var n = Number("0" + entity.slice(1));
          if (!isNaN(n)) {
            return String.fromCharCode(n);
          }
        }
        return s;
    }
  });
};
goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g;
goog.string.whitespaceEscape = function(str, opt_xml) {
  return goog.string.newLineToBr(str.replace(/  /g, " &#160;"), opt_xml);
};
goog.string.preserveSpaces = function(str) {
  return str.replace(/(^|[\n ]) /g, "$1" + goog.string.Unicode.NBSP);
};
goog.string.stripQuotes = function(str, quoteChars) {
  for (var length = quoteChars.length, i = 0; i < length; i++) {
    var quoteChar = 1 == length ? quoteChars : quoteChars.charAt(i);
    if (str.charAt(0) == quoteChar && str.charAt(str.length - 1) == quoteChar) {
      return str.substring(1, str.length - 1);
    }
  }
  return str;
};
goog.string.truncate = function(str, chars, opt_protectEscapedCharacters) {
  opt_protectEscapedCharacters && (str = goog.string.unescapeEntities(str));
  str.length > chars && (str = str.substring(0, chars - 3) + "...");
  opt_protectEscapedCharacters && (str = goog.string.htmlEscape(str));
  return str;
};
goog.string.truncateMiddle = function(str, chars, opt_protectEscapedCharacters, opt_trailingChars) {
  opt_protectEscapedCharacters && (str = goog.string.unescapeEntities(str));
  if (opt_trailingChars && str.length > chars) {
    opt_trailingChars > chars && (opt_trailingChars = chars), str = str.substring(0, chars - opt_trailingChars) + "..." + str.substring(str.length - opt_trailingChars);
  } else if (str.length > chars) {
    var half = Math.floor(chars / 2);
    str = str.substring(0, half + chars % 2) + "..." + str.substring(str.length - half);
  }
  opt_protectEscapedCharacters && (str = goog.string.htmlEscape(str));
  return str;
};
goog.string.specialEscapeChars_ = {"\x00":"\\0", "\b":"\\b", "\f":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\v":"\\x0B", '"':'\\"', "\\":"\\\\", "<":"\\u003C"};
goog.string.jsEscapeCache_ = {"'":"\\'"};
goog.string.quote = function(s) {
  s = String(s);
  for (var sb = ['"'], i = 0; i < s.length; i++) {
    var ch = s.charAt(i), cc = ch.charCodeAt(0);
    sb[i + 1] = goog.string.specialEscapeChars_[ch] || (31 < cc && 127 > cc ? ch : goog.string.escapeChar(ch));
  }
  sb.push('"');
  return sb.join("");
};
goog.string.escapeString = function(str) {
  for (var sb = [], i = 0; i < str.length; i++) {
    sb[i] = goog.string.escapeChar(str.charAt(i));
  }
  return sb.join("");
};
goog.string.escapeChar = function(c) {
  if (c in goog.string.jsEscapeCache_) {
    return goog.string.jsEscapeCache_[c];
  }
  if (c in goog.string.specialEscapeChars_) {
    return goog.string.jsEscapeCache_[c] = goog.string.specialEscapeChars_[c];
  }
  var rv = c, cc = c.charCodeAt(0);
  if (31 < cc && 127 > cc) {
    rv = c;
  } else {
    if (256 > cc) {
      if (rv = "\\x", 16 > cc || 256 < cc) {
        rv += "0";
      }
    } else {
      rv = "\\u", 4096 > cc && (rv += "0");
    }
    rv += cc.toString(16).toUpperCase();
  }
  return goog.string.jsEscapeCache_[c] = rv;
};
goog.string.contains = goog.string.internal.contains;
goog.string.caseInsensitiveContains = goog.string.internal.caseInsensitiveContains;
goog.string.countOf = function(s, ss) {
  return s && ss ? s.split(ss).length - 1 : 0;
};
goog.string.removeAt = function(s, index, stringLength) {
  var resultStr = s;
  0 <= index && index < s.length && 0 < stringLength && (resultStr = s.slice(0, index) + s.slice(index + stringLength));
  return resultStr;
};
goog.string.remove = function(str, substr) {
  return str.replace(substr, "");
};
goog.string.removeAll = function(s, ss) {
  var re = new RegExp(goog.string.regExpEscape(ss), "g");
  return s.replace(re, "");
};
goog.string.replaceAll = function(s, ss, replacement) {
  var re = new RegExp(goog.string.regExpEscape(ss), "g");
  return s.replace(re, replacement.replace(/\$/g, "$$$$"));
};
goog.string.regExpEscape = function(s) {
  return String(s).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08");
};
goog.string.repeat = String.prototype.repeat ? function(string, length) {
  return string.repeat(length);
} : function(string, length) {
  return Array(length + 1).join(string);
};
goog.string.padNumber = function(num, length, opt_precision) {
  if (!Number.isFinite(num)) {
    return String(num);
  }
  var s = void 0 !== opt_precision ? num.toFixed(opt_precision) : String(num), index = s.indexOf(".");
  -1 === index && (index = s.length);
  var sign = "-" === s[0] ? "-" : "";
  sign && (s = s.substring(1));
  return sign + goog.string.repeat("0", Math.max(0, length - index)) + s;
};
goog.string.makeSafe = function(obj) {
  return null == obj ? "" : String(obj);
};
goog.string.getRandomString = function() {
  return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ goog.now()).toString(36);
};
goog.string.compareVersions = goog.string.internal.compareVersions;
goog.string.hashCode = function(str) {
  for (var result = 0, i = 0; i < str.length; ++i) {
    result = 31 * result + str.charCodeAt(i) >>> 0;
  }
  return result;
};
goog.string.uniqueStringCounter_ = 2147483648 * Math.random() | 0;
goog.string.createUniqueString = function() {
  return "goog_" + goog.string.uniqueStringCounter_++;
};
goog.string.toNumber = function(str) {
  var num = Number(str);
  return 0 == num && goog.string.isEmptyOrWhitespace(str) ? NaN : num;
};
goog.string.isLowerCamelCase = function(str) {
  return /^[a-z]+([A-Z][a-z]*)*$/.test(str);
};
goog.string.isUpperCamelCase = function(str) {
  return /^([A-Z][a-z]*)+$/.test(str);
};
goog.string.toCamelCase = function(str) {
  return String(str).replace(/\-([a-z])/g, function(all, match) {
    return match.toUpperCase();
  });
};
goog.string.toSelectorCase = function(str) {
  return String(str).replace(/([A-Z])/g, "-$1").toLowerCase();
};
goog.string.toTitleCase = function(str, opt_delimiters) {
  var delimiters = "string" === typeof opt_delimiters ? goog.string.regExpEscape(opt_delimiters) : "\\s";
  return str.replace(new RegExp("(^" + (delimiters ? "|[" + delimiters + "]+" : "") + ")([a-z])", "g"), function(all, p1, p2) {
    return p1 + p2.toUpperCase();
  });
};
goog.string.capitalize = function(str) {
  return String(str.charAt(0)).toUpperCase() + String(str.slice(1)).toLowerCase();
};
goog.string.parseInt = function(value) {
  isFinite(value) && (value = String(value));
  return "string" === typeof value ? /^\s*-?0x/i.test(value) ? parseInt(value, 16) : parseInt(value, 10) : NaN;
};
goog.string.splitLimit = function(str, separator, limit) {
  for (var parts = str.split(separator), returnVal = []; 0 < limit && parts.length;) {
    returnVal.push(parts.shift()), limit--;
  }
  parts.length && returnVal.push(parts.join(separator));
  return returnVal;
};
goog.string.lastComponent = function(str, separators) {
  if (separators) {
    "string" == typeof separators && (separators = [separators]);
  } else {
    return str;
  }
  for (var lastSeparatorIndex = -1, i = 0; i < separators.length; i++) {
    if ("" != separators[i]) {
      var currentSeparatorIndex = str.lastIndexOf(separators[i]);
      currentSeparatorIndex > lastSeparatorIndex && (lastSeparatorIndex = currentSeparatorIndex);
    }
  }
  return -1 == lastSeparatorIndex ? str : str.slice(lastSeparatorIndex + 1);
};
goog.string.editDistance = function(a, b) {
  var v0 = [], v1 = [];
  if (a == b) {
    return 0;
  }
  if (!a.length || !b.length) {
    return Math.max(a.length, b.length);
  }
  for (var i = 0; i < b.length + 1; i++) {
    v0[i] = i;
  }
  for (var i$jscomp$0 = 0; i$jscomp$0 < a.length; i$jscomp$0++) {
    v1[0] = i$jscomp$0 + 1;
    for (var j = 0; j < b.length; j++) {
      v1[j + 1] = Math.min(v1[j] + 1, v0[j + 1] + 1, v0[j] + Number(a[i$jscomp$0] != b[j]));
    }
    for (var j$jscomp$0 = 0; j$jscomp$0 < v0.length; j$jscomp$0++) {
      v0[j$jscomp$0] = v1[j$jscomp$0];
    }
  }
  return v1[b.length];
};
goog.collections = {};
goog.collections.maps = {};
var module$contents$goog$collections$maps_MapLike = function() {
};
module$contents$goog$collections$maps_MapLike.prototype.set = function(key, val) {
};
module$contents$goog$collections$maps_MapLike.prototype.get = function(key) {
};
module$contents$goog$collections$maps_MapLike.prototype.keys = function() {
};
module$contents$goog$collections$maps_MapLike.prototype.values = function() {
};
module$contents$goog$collections$maps_MapLike.prototype.has = function(key) {
};
goog.collections.maps.MapLike = module$contents$goog$collections$maps_MapLike;
goog.collections.maps.setAll = function(map, entries) {
  if (entries) {
    for (var $jscomp$iter$24 = $jscomp.makeIterator(entries), $jscomp$key$1866876209$13$ = $jscomp$iter$24.next(); !$jscomp$key$1866876209$13$.done; $jscomp$key$1866876209$13$ = $jscomp$iter$24.next()) {
      var $jscomp$destructuring$var1 = $jscomp.makeIterator($jscomp$key$1866876209$13$.value), k = $jscomp$destructuring$var1.next().value, v = $jscomp$destructuring$var1.next().value;
      map.set(k, v);
    }
  }
};
goog.collections.maps.hasValue = function(map, val, valueEqualityFn) {
  valueEqualityFn = void 0 === valueEqualityFn ? module$contents$goog$collections$maps_defaultEqualityFn : valueEqualityFn;
  for (var $jscomp$iter$25 = $jscomp.makeIterator(map.values()), $jscomp$key$1866876209$14$v = $jscomp$iter$25.next(); !$jscomp$key$1866876209$14$v.done; $jscomp$key$1866876209$14$v = $jscomp$iter$25.next()) {
    if (valueEqualityFn($jscomp$key$1866876209$14$v.value, val)) {
      return !0;
    }
  }
  return !1;
};
var module$contents$goog$collections$maps_defaultEqualityFn = function(a, b) {
  return a === b;
};
goog.collections.maps.equals = function(map, otherMap, valueEqualityFn) {
  valueEqualityFn = void 0 === valueEqualityFn ? module$contents$goog$collections$maps_defaultEqualityFn : valueEqualityFn;
  if (map === otherMap) {
    return !0;
  }
  if (map.size !== otherMap.size) {
    return !1;
  }
  for (var $jscomp$iter$26 = $jscomp.makeIterator(map.keys()), $jscomp$key$1866876209$15$key = $jscomp$iter$26.next(); !$jscomp$key$1866876209$15$key.done; $jscomp$key$1866876209$15$key = $jscomp$iter$26.next()) {
    var key = $jscomp$key$1866876209$15$key.value;
    if (!otherMap.has(key) || !valueEqualityFn(map.get(key), otherMap.get(key))) {
      return !1;
    }
  }
  return !0;
};
goog.collections.maps.transpose = function(map) {
  for (var transposed = new Map(), $jscomp$iter$27 = $jscomp.makeIterator(map.keys()), $jscomp$key$1866876209$16$key = $jscomp$iter$27.next(); !$jscomp$key$1866876209$16$key.done; $jscomp$key$1866876209$16$key = $jscomp$iter$27.next()) {
    var key = $jscomp$key$1866876209$16$key.value, val = map.get(key);
    transposed.set(val, key);
  }
  return transposed;
};
goog.collections.maps.toObject = function(map) {
  for (var obj = {}, $jscomp$iter$28 = $jscomp.makeIterator(map.keys()), $jscomp$key$1866876209$17$key = $jscomp$iter$28.next(); !$jscomp$key$1866876209$17$key.done; $jscomp$key$1866876209$17$key = $jscomp$iter$28.next()) {
    var key = $jscomp$key$1866876209$17$key.value;
    obj[key] = map.get(key);
  }
  return obj;
};
goog.structs = {};
goog.structs.getCount = function(col) {
  return col.getCount && "function" == typeof col.getCount ? col.getCount() : goog.isArrayLike(col) || "string" === typeof col ? col.length : module$contents$goog$object_getCount(col);
};
goog.structs.getValues = function(col) {
  if (col.getValues && "function" == typeof col.getValues) {
    return col.getValues();
  }
  if ("undefined" !== typeof Map && col instanceof Map || "undefined" !== typeof Set && col instanceof Set) {
    return Array.from(col.values());
  }
  if ("string" === typeof col) {
    return col.split("");
  }
  if (goog.isArrayLike(col)) {
    for (var rv = [], l = col.length, i = 0; i < l; i++) {
      rv.push(col[i]);
    }
    return rv;
  }
  return module$contents$goog$object_getValues(col);
};
goog.structs.getKeys = function(col) {
  if (col.getKeys && "function" == typeof col.getKeys) {
    return col.getKeys();
  }
  if (!col.getValues || "function" != typeof col.getValues) {
    if ("undefined" !== typeof Map && col instanceof Map) {
      return Array.from(col.keys());
    }
    if (!("undefined" !== typeof Set && col instanceof Set)) {
      if (goog.isArrayLike(col) || "string" === typeof col) {
        for (var rv = [], l = col.length, i = 0; i < l; i++) {
          rv.push(i);
        }
        return rv;
      }
      return module$contents$goog$object_getKeys(col);
    }
  }
};
goog.structs.contains = function(col, val) {
  return col.contains && "function" == typeof col.contains ? col.contains(val) : col.containsValue && "function" == typeof col.containsValue ? col.containsValue(val) : goog.isArrayLike(col) || "string" === typeof col ? module$contents$goog$array_contains(col, val) : module$contents$goog$object_containsValue(col, val);
};
goog.structs.isEmpty = function(col) {
  return col.isEmpty && "function" == typeof col.isEmpty ? col.isEmpty() : goog.isArrayLike(col) || "string" === typeof col ? 0 === col.length : module$contents$goog$object_isEmpty(col);
};
goog.structs.clear = function(col) {
  col.clear && "function" == typeof col.clear ? col.clear() : goog.isArrayLike(col) ? module$contents$goog$array_clear(col) : module$contents$goog$object_clear(col);
};
goog.structs.forEach = function(col, f, opt_obj) {
  if (col.forEach && "function" == typeof col.forEach) {
    col.forEach(f, opt_obj);
  } else if (goog.isArrayLike(col) || "string" === typeof col) {
    Array.prototype.forEach.call(col, f, opt_obj);
  } else {
    for (var keys = goog.structs.getKeys(col), values = goog.structs.getValues(col), l = values.length, i = 0; i < l; i++) {
      f.call(opt_obj, values[i], keys && keys[i], col);
    }
  }
};
goog.structs.filter = function(col, f, opt_obj) {
  if ("function" == typeof col.filter) {
    return col.filter(f, opt_obj);
  }
  if (goog.isArrayLike(col) || "string" === typeof col) {
    return Array.prototype.filter.call(col, f, opt_obj);
  }
  var keys = goog.structs.getKeys(col), values = goog.structs.getValues(col), l = values.length;
  if (keys) {
    var rv = {};
    for (var i = 0; i < l; i++) {
      f.call(opt_obj, values[i], keys[i], col) && (rv[keys[i]] = values[i]);
    }
  } else {
    for (rv = [], i = 0; i < l; i++) {
      f.call(opt_obj, values[i], void 0, col) && rv.push(values[i]);
    }
  }
  return rv;
};
goog.structs.map = function(col, f, opt_obj) {
  if ("function" == typeof col.map) {
    return col.map(f, opt_obj);
  }
  if (goog.isArrayLike(col) || "string" === typeof col) {
    return Array.prototype.map.call(col, f, opt_obj);
  }
  var keys = goog.structs.getKeys(col), values = goog.structs.getValues(col), l = values.length;
  if (keys) {
    var rv = {};
    for (var i = 0; i < l; i++) {
      rv[keys[i]] = f.call(opt_obj, values[i], keys[i], col);
    }
  } else {
    for (rv = [], i = 0; i < l; i++) {
      rv[i] = f.call(opt_obj, values[i], void 0, col);
    }
  }
  return rv;
};
goog.structs.some = function(col, f, opt_obj) {
  if ("function" == typeof col.some) {
    return col.some(f, opt_obj);
  }
  if (goog.isArrayLike(col) || "string" === typeof col) {
    return Array.prototype.some.call(col, f, opt_obj);
  }
  for (var keys = goog.structs.getKeys(col), values = goog.structs.getValues(col), l = values.length, i = 0; i < l; i++) {
    if (f.call(opt_obj, values[i], keys && keys[i], col)) {
      return !0;
    }
  }
  return !1;
};
goog.structs.every = function(col, f, opt_obj) {
  if ("function" == typeof col.every) {
    return col.every(f, opt_obj);
  }
  if (goog.isArrayLike(col) || "string" === typeof col) {
    return Array.prototype.every.call(col, f, opt_obj);
  }
  for (var keys = goog.structs.getKeys(col), values = goog.structs.getValues(col), l = values.length, i = 0; i < l; i++) {
    if (!f.call(opt_obj, values[i], keys && keys[i], col)) {
      return !1;
    }
  }
  return !0;
};
goog.uri = {};
goog.uri.utils = {};
goog.uri.utils.QueryArray = {};
goog.uri.utils.QueryValue = {};
goog.uri.utils.CharCode_ = {AMPERSAND:38, EQUAL:61, HASH:35, QUESTION:63};
goog.uri.utils.buildFromEncodedParts = function(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {
  var out = "";
  opt_scheme && (out += opt_scheme + ":");
  opt_domain && (out += "//", opt_userInfo && (out += opt_userInfo + "@"), out += opt_domain, opt_port && (out += ":" + opt_port));
  opt_path && (out += opt_path);
  opt_queryData && (out += "?" + opt_queryData);
  opt_fragment && (out += "#" + opt_fragment);
  return out;
};
goog.uri.utils.splitRe_ = RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$");
goog.uri.utils.ComponentIndex = {SCHEME:1, USER_INFO:2, DOMAIN:3, PORT:4, PATH:5, QUERY_DATA:6, FRAGMENT:7};
goog.uri.utils.urlPackageSupportLoggingHandler_ = null;
goog.uri.utils.setUrlPackageSupportLoggingHandler = function(handler) {
  goog.uri.utils.urlPackageSupportLoggingHandler_ = handler;
};
goog.uri.utils.split = function(uri) {
  var result = uri.match(goog.uri.utils.splitRe_);
  goog.uri.utils.urlPackageSupportLoggingHandler_ && 0 <= ["http", "https", "ws", "wss", "ftp"].indexOf(result[goog.uri.utils.ComponentIndex.SCHEME]) && goog.uri.utils.urlPackageSupportLoggingHandler_(uri);
  return result;
};
goog.uri.utils.decodeIfPossible_ = function(uri, opt_preserveReserved) {
  return uri ? opt_preserveReserved ? decodeURI(uri) : decodeURIComponent(uri) : uri;
};
goog.uri.utils.getComponentByIndex_ = function(componentIndex, uri) {
  return goog.uri.utils.split(uri)[componentIndex] || null;
};
goog.uri.utils.getScheme = function(uri) {
  return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.SCHEME, uri);
};
goog.uri.utils.getEffectiveScheme = function(uri) {
  var scheme = goog.uri.utils.getScheme(uri);
  !scheme && goog.global.self && goog.global.self.location && (scheme = goog.global.self.location.protocol.slice(0, -1));
  return scheme ? scheme.toLowerCase() : "";
};
goog.uri.utils.getUserInfoEncoded = function(uri) {
  return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.USER_INFO, uri);
};
goog.uri.utils.getUserInfo = function(uri) {
  return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getUserInfoEncoded(uri));
};
goog.uri.utils.getDomainEncoded = function(uri) {
  return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.DOMAIN, uri);
};
goog.uri.utils.getDomain = function(uri) {
  return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getDomainEncoded(uri), !0);
};
goog.uri.utils.getPort = function(uri) {
  return Number(goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PORT, uri)) || null;
};
goog.uri.utils.getPathEncoded = function(uri) {
  return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PATH, uri);
};
goog.uri.utils.getPath = function(uri) {
  return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getPathEncoded(uri), !0);
};
goog.uri.utils.getQueryData = function(uri) {
  return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.QUERY_DATA, uri);
};
goog.uri.utils.getFragmentEncoded = function(uri) {
  var hashIndex = uri.indexOf("#");
  return 0 > hashIndex ? null : uri.slice(hashIndex + 1);
};
goog.uri.utils.setFragmentEncoded = function(uri, fragment) {
  return goog.uri.utils.removeFragment(uri) + (fragment ? "#" + fragment : "");
};
goog.uri.utils.getFragment = function(uri) {
  return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getFragmentEncoded(uri));
};
goog.uri.utils.getHost = function(uri) {
  var pieces = goog.uri.utils.split(uri);
  return goog.uri.utils.buildFromEncodedParts(pieces[goog.uri.utils.ComponentIndex.SCHEME], pieces[goog.uri.utils.ComponentIndex.USER_INFO], pieces[goog.uri.utils.ComponentIndex.DOMAIN], pieces[goog.uri.utils.ComponentIndex.PORT]);
};
goog.uri.utils.getOrigin = function(uri) {
  var pieces = goog.uri.utils.split(uri);
  return goog.uri.utils.buildFromEncodedParts(pieces[goog.uri.utils.ComponentIndex.SCHEME], null, pieces[goog.uri.utils.ComponentIndex.DOMAIN], pieces[goog.uri.utils.ComponentIndex.PORT]);
};
goog.uri.utils.getPathAndAfter = function(uri) {
  var pieces = goog.uri.utils.split(uri);
  return goog.uri.utils.buildFromEncodedParts(null, null, null, null, pieces[goog.uri.utils.ComponentIndex.PATH], pieces[goog.uri.utils.ComponentIndex.QUERY_DATA], pieces[goog.uri.utils.ComponentIndex.FRAGMENT]);
};
goog.uri.utils.removeFragment = function(uri) {
  var hashIndex = uri.indexOf("#");
  return 0 > hashIndex ? uri : uri.slice(0, hashIndex);
};
goog.uri.utils.haveSameDomain = function(uri1, uri2) {
  var pieces1 = goog.uri.utils.split(uri1), pieces2 = goog.uri.utils.split(uri2);
  return pieces1[goog.uri.utils.ComponentIndex.DOMAIN] == pieces2[goog.uri.utils.ComponentIndex.DOMAIN] && pieces1[goog.uri.utils.ComponentIndex.SCHEME] == pieces2[goog.uri.utils.ComponentIndex.SCHEME] && pieces1[goog.uri.utils.ComponentIndex.PORT] == pieces2[goog.uri.utils.ComponentIndex.PORT];
};
goog.uri.utils.assertNoFragmentsOrQueries_ = function(uri) {
  goog.asserts.assert(0 > uri.indexOf("#") && 0 > uri.indexOf("?"), "goog.uri.utils: Fragment or query identifiers are not supported: [%s]", uri);
};
goog.uri.utils.parseQueryData = function(encodedQuery, callback) {
  if (encodedQuery) {
    for (var pairs = encodedQuery.split("&"), i = 0; i < pairs.length; i++) {
      var indexOfEquals = pairs[i].indexOf("="), name = null, value = null;
      0 <= indexOfEquals ? (name = pairs[i].substring(0, indexOfEquals), value = pairs[i].substring(indexOfEquals + 1)) : name = pairs[i];
      callback(name, value ? goog.string.urlDecode(value) : "");
    }
  }
};
goog.uri.utils.splitQueryData_ = function(uri) {
  var hashIndex = uri.indexOf("#");
  0 > hashIndex && (hashIndex = uri.length);
  var questionIndex = uri.indexOf("?");
  if (0 > questionIndex || questionIndex > hashIndex) {
    questionIndex = hashIndex;
    var queryData = "";
  } else {
    queryData = uri.substring(questionIndex + 1, hashIndex);
  }
  return [uri.slice(0, questionIndex), queryData, uri.slice(hashIndex)];
};
goog.uri.utils.joinQueryData_ = function(parts) {
  return parts[0] + (parts[1] ? "?" + parts[1] : "") + parts[2];
};
goog.uri.utils.appendQueryData_ = function(queryData, newData) {
  return newData ? queryData ? queryData + "&" + newData : newData : queryData;
};
goog.uri.utils.appendQueryDataToUri_ = function(uri, queryData) {
  if (!queryData) {
    return uri;
  }
  var parts = goog.uri.utils.splitQueryData_(uri);
  parts[1] = goog.uri.utils.appendQueryData_(parts[1], queryData);
  return goog.uri.utils.joinQueryData_(parts);
};
goog.uri.utils.appendKeyValuePairs_ = function(key, value, pairs) {
  goog.asserts.assertString(key);
  if (Array.isArray(value)) {
    goog.asserts.assertArray(value);
    for (var j = 0; j < value.length; j++) {
      goog.uri.utils.appendKeyValuePairs_(key, String(value[j]), pairs);
    }
  } else {
    null != value && pairs.push(key + ("" === value ? "" : "=" + goog.string.urlEncode(value)));
  }
};
goog.uri.utils.buildQueryData = function(keysAndValues, opt_startIndex) {
  goog.asserts.assert(0 == Math.max(keysAndValues.length - (opt_startIndex || 0), 0) % 2, "goog.uri.utils: Key/value lists must be even in length.");
  for (var params = [], i = opt_startIndex || 0; i < keysAndValues.length; i += 2) {
    goog.uri.utils.appendKeyValuePairs_(keysAndValues[i], keysAndValues[i + 1], params);
  }
  return params.join("&");
};
goog.uri.utils.buildQueryDataFromMap = function(map) {
  var params = [], key;
  for (key in map) {
    goog.uri.utils.appendKeyValuePairs_(key, map[key], params);
  }
  return params.join("&");
};
goog.uri.utils.appendParams = function(uri, var_args) {
  var queryData = 2 == arguments.length ? goog.uri.utils.buildQueryData(arguments[1], 0) : goog.uri.utils.buildQueryData(arguments, 1);
  return goog.uri.utils.appendQueryDataToUri_(uri, queryData);
};
goog.uri.utils.appendParamsFromMap = function(uri, map) {
  var queryData = goog.uri.utils.buildQueryDataFromMap(map);
  return goog.uri.utils.appendQueryDataToUri_(uri, queryData);
};
goog.uri.utils.appendParam = function(uri, key, opt_value) {
  var value = null != opt_value ? "=" + goog.string.urlEncode(opt_value) : "";
  return goog.uri.utils.appendQueryDataToUri_(uri, key + value);
};
goog.uri.utils.findParam_ = function(uri, startIndex, keyEncoded, hashOrEndIndex) {
  for (var index = startIndex, keyLength = keyEncoded.length; 0 <= (index = uri.indexOf(keyEncoded, index)) && index < hashOrEndIndex;) {
    var precedingChar = uri.charCodeAt(index - 1);
    if (precedingChar == goog.uri.utils.CharCode_.AMPERSAND || precedingChar == goog.uri.utils.CharCode_.QUESTION) {
      var followingChar = uri.charCodeAt(index + keyLength);
      if (!followingChar || followingChar == goog.uri.utils.CharCode_.EQUAL || followingChar == goog.uri.utils.CharCode_.AMPERSAND || followingChar == goog.uri.utils.CharCode_.HASH) {
        return index;
      }
    }
    index += keyLength + 1;
  }
  return -1;
};
goog.uri.utils.hashOrEndRe_ = /#|$/;
goog.uri.utils.hasParam = function(uri, keyEncoded) {
  return 0 <= goog.uri.utils.findParam_(uri, 0, keyEncoded, uri.search(goog.uri.utils.hashOrEndRe_));
};
goog.uri.utils.getParamValue = function(uri, keyEncoded) {
  var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_), foundIndex = goog.uri.utils.findParam_(uri, 0, keyEncoded, hashOrEndIndex);
  if (0 > foundIndex) {
    return null;
  }
  var endPosition = uri.indexOf("&", foundIndex);
  if (0 > endPosition || endPosition > hashOrEndIndex) {
    endPosition = hashOrEndIndex;
  }
  foundIndex += keyEncoded.length + 1;
  return goog.string.urlDecode(uri.slice(foundIndex, -1 !== endPosition ? endPosition : 0));
};
goog.uri.utils.getParamValues = function(uri, keyEncoded) {
  for (var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_), position = 0, foundIndex, result = []; 0 <= (foundIndex = goog.uri.utils.findParam_(uri, position, keyEncoded, hashOrEndIndex));) {
    position = uri.indexOf("&", foundIndex);
    if (0 > position || position > hashOrEndIndex) {
      position = hashOrEndIndex;
    }
    foundIndex += keyEncoded.length + 1;
    result.push(goog.string.urlDecode(uri.slice(foundIndex, Math.max(position, 0))));
  }
  return result;
};
goog.uri.utils.trailingQueryPunctuationRe_ = /[?&]($|#)/;
goog.uri.utils.removeParam = function(uri, keyEncoded) {
  for (var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_), position = 0, foundIndex, buffer = []; 0 <= (foundIndex = goog.uri.utils.findParam_(uri, position, keyEncoded, hashOrEndIndex));) {
    buffer.push(uri.substring(position, foundIndex)), position = Math.min(uri.indexOf("&", foundIndex) + 1 || hashOrEndIndex, hashOrEndIndex);
  }
  buffer.push(uri.slice(position));
  return buffer.join("").replace(goog.uri.utils.trailingQueryPunctuationRe_, "$1");
};
goog.uri.utils.setParam = function(uri, keyEncoded, value) {
  return goog.uri.utils.appendParam(goog.uri.utils.removeParam(uri, keyEncoded), keyEncoded, value);
};
goog.uri.utils.setParamsFromMap = function(uri, params) {
  var parts = goog.uri.utils.splitQueryData_(uri), queryData = parts[1], buffer = [];
  queryData && queryData.split("&").forEach(function(pair) {
    var indexOfEquals = pair.indexOf("="), name = 0 <= indexOfEquals ? pair.slice(0, indexOfEquals) : pair;
    params.hasOwnProperty(name) || buffer.push(pair);
  });
  parts[1] = goog.uri.utils.appendQueryData_(buffer.join("&"), goog.uri.utils.buildQueryDataFromMap(params));
  return goog.uri.utils.joinQueryData_(parts);
};
goog.uri.utils.appendPath = function(baseUri, path) {
  goog.uri.utils.assertNoFragmentsOrQueries_(baseUri);
  goog.string.endsWith(baseUri, "/") && (baseUri = baseUri.slice(0, -1));
  goog.string.startsWith(path, "/") && (path = path.slice(1));
  return "" + baseUri + "/" + path;
};
goog.uri.utils.setPath = function(uri, path) {
  goog.string.startsWith(path, "/") || (path = "/" + path);
  var parts = goog.uri.utils.split(uri);
  return goog.uri.utils.buildFromEncodedParts(parts[goog.uri.utils.ComponentIndex.SCHEME], parts[goog.uri.utils.ComponentIndex.USER_INFO], parts[goog.uri.utils.ComponentIndex.DOMAIN], parts[goog.uri.utils.ComponentIndex.PORT], path, parts[goog.uri.utils.ComponentIndex.QUERY_DATA], parts[goog.uri.utils.ComponentIndex.FRAGMENT]);
};
goog.uri.utils.StandardQueryParam = {RANDOM:"zx"};
goog.uri.utils.makeUnique = function(uri) {
  return goog.uri.utils.setParam(uri, goog.uri.utils.StandardQueryParam.RANDOM, goog.string.getRandomString());
};
goog.Uri = function(opt_uri, opt_ignoreCase) {
  this.domain_ = this.userInfo_ = this.scheme_ = "";
  this.port_ = null;
  this.fragment_ = this.path_ = "";
  this.ignoreCase_ = this.isReadOnly_ = !1;
  var m;
  opt_uri instanceof goog.Uri ? (this.ignoreCase_ = void 0 !== opt_ignoreCase ? opt_ignoreCase : opt_uri.getIgnoreCase(), this.setScheme(opt_uri.getScheme()), this.setUserInfo(opt_uri.getUserInfo()), this.setDomain(opt_uri.getDomain()), this.setPort(opt_uri.getPort()), this.setPath(opt_uri.getPath()), this.setQueryData(opt_uri.getQueryData().clone()), this.setFragment(opt_uri.getFragment())) : opt_uri && (m = goog.uri.utils.split(String(opt_uri))) ? (this.ignoreCase_ = !!opt_ignoreCase, this.setScheme(m[goog.uri.utils.ComponentIndex.SCHEME] || 
  "", !0), this.setUserInfo(m[goog.uri.utils.ComponentIndex.USER_INFO] || "", !0), this.setDomain(m[goog.uri.utils.ComponentIndex.DOMAIN] || "", !0), this.setPort(m[goog.uri.utils.ComponentIndex.PORT]), this.setPath(m[goog.uri.utils.ComponentIndex.PATH] || "", !0), this.setQueryData(m[goog.uri.utils.ComponentIndex.QUERY_DATA] || "", !0), this.setFragment(m[goog.uri.utils.ComponentIndex.FRAGMENT] || "", !0)) : (this.ignoreCase_ = !!opt_ignoreCase, this.queryData_ = new goog.Uri.QueryData(null, this.ignoreCase_));
};
goog.Uri.RANDOM_PARAM = goog.uri.utils.StandardQueryParam.RANDOM;
goog.Uri.prototype.toString = function() {
  var out = [], scheme = this.getScheme();
  scheme && out.push(goog.Uri.encodeSpecialChars_(scheme, goog.Uri.reDisallowedInSchemeOrUserInfo_, !0), ":");
  var domain = this.getDomain();
  if (domain || "file" == scheme) {
    out.push("//");
    var userInfo = this.getUserInfo();
    userInfo && out.push(goog.Uri.encodeSpecialChars_(userInfo, goog.Uri.reDisallowedInSchemeOrUserInfo_, !0), "@");
    out.push(goog.Uri.removeDoubleEncoding_(goog.string.urlEncode(domain)));
    var port = this.getPort();
    null != port && out.push(":", String(port));
  }
  var path = this.getPath();
  path && (this.hasDomain() && "/" != path.charAt(0) && out.push("/"), out.push(goog.Uri.encodeSpecialChars_(path, "/" == path.charAt(0) ? goog.Uri.reDisallowedInAbsolutePath_ : goog.Uri.reDisallowedInRelativePath_, !0)));
  var query = this.getEncodedQuery();
  query && out.push("?", query);
  var fragment = this.getFragment();
  fragment && out.push("#", goog.Uri.encodeSpecialChars_(fragment, goog.Uri.reDisallowedInFragment_));
  return out.join("");
};
goog.Uri.prototype.resolve = function(relativeUri) {
  var absoluteUri = this.clone(), overridden = relativeUri.hasScheme();
  overridden ? absoluteUri.setScheme(relativeUri.getScheme()) : overridden = relativeUri.hasUserInfo();
  overridden ? absoluteUri.setUserInfo(relativeUri.getUserInfo()) : overridden = relativeUri.hasDomain();
  overridden ? absoluteUri.setDomain(relativeUri.getDomain()) : overridden = relativeUri.hasPort();
  var path = relativeUri.getPath();
  if (overridden) {
    absoluteUri.setPort(relativeUri.getPort());
  } else {
    if (overridden = relativeUri.hasPath()) {
      if ("/" != path.charAt(0)) {
        if (this.hasDomain() && !this.hasPath()) {
          path = "/" + path;
        } else {
          var lastSlashIndex = absoluteUri.getPath().lastIndexOf("/");
          -1 != lastSlashIndex && (path = absoluteUri.getPath().slice(0, lastSlashIndex + 1) + path);
        }
      }
      path = goog.Uri.removeDotSegments(path);
    }
  }
  overridden ? absoluteUri.setPath(path) : overridden = relativeUri.hasQuery();
  overridden ? absoluteUri.setQueryData(relativeUri.getQueryData().clone()) : overridden = relativeUri.hasFragment();
  overridden && absoluteUri.setFragment(relativeUri.getFragment());
  return absoluteUri;
};
goog.Uri.prototype.clone = function() {
  return new goog.Uri(this);
};
goog.Uri.prototype.getScheme = function() {
  return this.scheme_;
};
goog.Uri.prototype.setScheme = function(newScheme, opt_decode) {
  this.enforceReadOnly();
  if (this.scheme_ = opt_decode ? goog.Uri.decodeOrEmpty_(newScheme, !0) : newScheme) {
    this.scheme_ = this.scheme_.replace(/:$/, "");
  }
  return this;
};
goog.Uri.prototype.hasScheme = function() {
  return !!this.scheme_;
};
goog.Uri.prototype.getUserInfo = function() {
  return this.userInfo_;
};
goog.Uri.prototype.setUserInfo = function(newUserInfo, opt_decode) {
  this.enforceReadOnly();
  this.userInfo_ = opt_decode ? goog.Uri.decodeOrEmpty_(newUserInfo) : newUserInfo;
  return this;
};
goog.Uri.prototype.hasUserInfo = function() {
  return !!this.userInfo_;
};
goog.Uri.prototype.getDomain = function() {
  return this.domain_;
};
goog.Uri.prototype.setDomain = function(newDomain, opt_decode) {
  this.enforceReadOnly();
  this.domain_ = opt_decode ? goog.Uri.decodeOrEmpty_(newDomain, !0) : newDomain;
  return this;
};
goog.Uri.prototype.hasDomain = function() {
  return !!this.domain_;
};
goog.Uri.prototype.getPort = function() {
  return this.port_;
};
goog.Uri.prototype.setPort = function(newPort) {
  this.enforceReadOnly();
  if (newPort) {
    newPort = Number(newPort);
    if (isNaN(newPort) || 0 > newPort) {
      throw Error("Bad port number " + newPort);
    }
    this.port_ = newPort;
  } else {
    this.port_ = null;
  }
  return this;
};
goog.Uri.prototype.hasPort = function() {
  return null != this.port_;
};
goog.Uri.prototype.getPath = function() {
  return this.path_;
};
goog.Uri.prototype.setPath = function(newPath, opt_decode) {
  this.enforceReadOnly();
  this.path_ = opt_decode ? goog.Uri.decodeOrEmpty_(newPath, !0) : newPath;
  return this;
};
goog.Uri.prototype.hasPath = function() {
  return !!this.path_;
};
goog.Uri.prototype.hasQuery = function() {
  return "" !== this.queryData_.toString();
};
goog.Uri.prototype.setQueryData = function(queryData, opt_decode) {
  this.enforceReadOnly();
  queryData instanceof goog.Uri.QueryData ? (this.queryData_ = queryData, this.queryData_.setIgnoreCase(this.ignoreCase_)) : (opt_decode || (queryData = goog.Uri.encodeSpecialChars_(queryData, goog.Uri.reDisallowedInQuery_)), this.queryData_ = new goog.Uri.QueryData(queryData, this.ignoreCase_));
  return this;
};
goog.Uri.prototype.setQuery = function(newQuery, opt_decode) {
  return this.setQueryData(newQuery, opt_decode);
};
goog.Uri.prototype.getEncodedQuery = function() {
  return this.queryData_.toString();
};
goog.Uri.prototype.getDecodedQuery = function() {
  return this.queryData_.toDecodedString();
};
goog.Uri.prototype.getQueryData = function() {
  return this.queryData_;
};
goog.Uri.prototype.getQuery = function() {
  return this.getEncodedQuery();
};
goog.Uri.prototype.setParameterValue = function(key, value) {
  this.enforceReadOnly();
  this.queryData_.set(key, value);
  return this;
};
goog.Uri.prototype.setParameterValues = function(key, values) {
  this.enforceReadOnly();
  Array.isArray(values) || (values = [String(values)]);
  this.queryData_.setValues(key, values);
  return this;
};
goog.Uri.prototype.getParameterValues = function(name) {
  return this.queryData_.getValues(name);
};
goog.Uri.prototype.getParameterValue = function(paramName) {
  return this.queryData_.get(paramName);
};
goog.Uri.prototype.getFragment = function() {
  return this.fragment_;
};
goog.Uri.prototype.setFragment = function(newFragment, opt_decode) {
  this.enforceReadOnly();
  this.fragment_ = opt_decode ? goog.Uri.decodeOrEmpty_(newFragment) : newFragment;
  return this;
};
goog.Uri.prototype.hasFragment = function() {
  return !!this.fragment_;
};
goog.Uri.prototype.hasSameDomainAs = function(uri2) {
  return (!this.hasDomain() && !uri2.hasDomain() || this.getDomain() == uri2.getDomain()) && (!this.hasPort() && !uri2.hasPort() || this.getPort() == uri2.getPort());
};
goog.Uri.prototype.makeUnique = function() {
  this.enforceReadOnly();
  this.setParameterValue(goog.Uri.RANDOM_PARAM, goog.string.getRandomString());
  return this;
};
goog.Uri.prototype.removeParameter = function(key) {
  this.enforceReadOnly();
  this.queryData_.remove(key);
  return this;
};
goog.Uri.prototype.setReadOnly = function(isReadOnly) {
  this.isReadOnly_ = isReadOnly;
  return this;
};
goog.Uri.prototype.isReadOnly = function() {
  return this.isReadOnly_;
};
goog.Uri.prototype.enforceReadOnly = function() {
  if (this.isReadOnly_) {
    throw Error("Tried to modify a read-only Uri");
  }
};
goog.Uri.prototype.setIgnoreCase = function(ignoreCase) {
  this.ignoreCase_ = ignoreCase;
  this.queryData_ && this.queryData_.setIgnoreCase(ignoreCase);
  return this;
};
goog.Uri.prototype.getIgnoreCase = function() {
  return this.ignoreCase_;
};
goog.Uri.parse = function(uri, opt_ignoreCase) {
  return uri instanceof goog.Uri ? uri.clone() : new goog.Uri(uri, opt_ignoreCase);
};
goog.Uri.create = function(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_query, opt_fragment, opt_ignoreCase) {
  var uri = new goog.Uri(null, opt_ignoreCase);
  opt_scheme && uri.setScheme(opt_scheme);
  opt_userInfo && uri.setUserInfo(opt_userInfo);
  opt_domain && uri.setDomain(opt_domain);
  opt_port && uri.setPort(opt_port);
  opt_path && uri.setPath(opt_path);
  opt_query && uri.setQueryData(opt_query);
  opt_fragment && uri.setFragment(opt_fragment);
  return uri;
};
goog.Uri.resolve = function(base, rel) {
  base instanceof goog.Uri || (base = goog.Uri.parse(base));
  rel instanceof goog.Uri || (rel = goog.Uri.parse(rel));
  return base.resolve(rel);
};
goog.Uri.removeDotSegments = function(path) {
  if (".." == path || "." == path) {
    return "";
  }
  if (goog.string.contains(path, "./") || goog.string.contains(path, "/.")) {
    for (var leadingSlash = goog.string.startsWith(path, "/"), segments = path.split("/"), out = [], pos = 0; pos < segments.length;) {
      var segment = segments[pos++];
      "." == segment ? leadingSlash && pos == segments.length && out.push("") : ".." == segment ? ((1 < out.length || 1 == out.length && "" != out[0]) && out.pop(), leadingSlash && pos == segments.length && out.push("")) : (out.push(segment), leadingSlash = !0);
    }
    return out.join("/");
  }
  return path;
};
goog.Uri.decodeOrEmpty_ = function(val, opt_preserveReserved) {
  return val ? opt_preserveReserved ? decodeURI(val.replace(/%25/g, "%2525")) : decodeURIComponent(val) : "";
};
goog.Uri.encodeSpecialChars_ = function(unescapedPart, extra, opt_removeDoubleEncoding) {
  if ("string" === typeof unescapedPart) {
    var encoded = encodeURI(unescapedPart).replace(extra, goog.Uri.encodeChar_);
    opt_removeDoubleEncoding && (encoded = goog.Uri.removeDoubleEncoding_(encoded));
    return encoded;
  }
  return null;
};
goog.Uri.encodeChar_ = function(ch) {
  var n = ch.charCodeAt(0);
  return "%" + (n >> 4 & 15).toString(16) + (n & 15).toString(16);
};
goog.Uri.removeDoubleEncoding_ = function(doubleEncodedString) {
  return doubleEncodedString.replace(/%25([0-9a-fA-F]{2})/g, "%$1");
};
goog.Uri.reDisallowedInSchemeOrUserInfo_ = /[#\/\?@]/g;
goog.Uri.reDisallowedInRelativePath_ = /[#\?:]/g;
goog.Uri.reDisallowedInAbsolutePath_ = /[#\?]/g;
goog.Uri.reDisallowedInQuery_ = /[#\?@]/g;
goog.Uri.reDisallowedInFragment_ = /#/g;
goog.Uri.haveSameDomain = function(uri1String, uri2String) {
  var pieces1 = goog.uri.utils.split(uri1String), pieces2 = goog.uri.utils.split(uri2String);
  return pieces1[goog.uri.utils.ComponentIndex.DOMAIN] == pieces2[goog.uri.utils.ComponentIndex.DOMAIN] && pieces1[goog.uri.utils.ComponentIndex.PORT] == pieces2[goog.uri.utils.ComponentIndex.PORT];
};
goog.Uri.QueryData = function(opt_query, opt_ignoreCase) {
  this.count_ = this.keyMap_ = null;
  this.encodedQuery_ = opt_query || null;
  this.ignoreCase_ = !!opt_ignoreCase;
};
goog.Uri.QueryData.prototype.ensureKeyMapInitialized_ = function() {
  if (!this.keyMap_ && (this.keyMap_ = new Map(), this.count_ = 0, this.encodedQuery_)) {
    var self = this;
    goog.uri.utils.parseQueryData(this.encodedQuery_, function(name, value) {
      self.add(goog.string.urlDecode(name), value);
    });
  }
};
goog.Uri.QueryData.createFromMap = function(map, opt_ignoreCase) {
  var keys = goog.structs.getKeys(map);
  if ("undefined" == typeof keys) {
    throw Error("Keys are undefined");
  }
  for (var queryData = new goog.Uri.QueryData(null, opt_ignoreCase), values = goog.structs.getValues(map), i = 0; i < keys.length; i++) {
    var key = keys[i], value = values[i];
    Array.isArray(value) ? queryData.setValues(key, value) : queryData.add(key, value);
  }
  return queryData;
};
goog.Uri.QueryData.createFromKeysValues = function(keys, values, opt_ignoreCase) {
  if (keys.length != values.length) {
    throw Error("Mismatched lengths for keys/values");
  }
  for (var queryData = new goog.Uri.QueryData(null, opt_ignoreCase), i = 0; i < keys.length; i++) {
    queryData.add(keys[i], values[i]);
  }
  return queryData;
};
goog.Uri.QueryData.prototype.getCount = function() {
  this.ensureKeyMapInitialized_();
  return this.count_;
};
goog.Uri.QueryData.prototype.add = function(key, value) {
  this.ensureKeyMapInitialized_();
  this.invalidateCache_();
  key = this.getKeyName_(key);
  var values = this.keyMap_.get(key);
  values || this.keyMap_.set(key, values = []);
  values.push(value);
  this.count_ = goog.asserts.assertNumber(this.count_) + 1;
  return this;
};
goog.Uri.QueryData.prototype.remove = function(key) {
  this.ensureKeyMapInitialized_();
  key = this.getKeyName_(key);
  return this.keyMap_.has(key) ? (this.invalidateCache_(), this.count_ = goog.asserts.assertNumber(this.count_) - this.keyMap_.get(key).length, this.keyMap_.delete(key)) : !1;
};
goog.Uri.QueryData.prototype.clear = function() {
  this.invalidateCache_();
  this.keyMap_ = null;
  this.count_ = 0;
};
goog.Uri.QueryData.prototype.isEmpty = function() {
  this.ensureKeyMapInitialized_();
  return 0 == this.count_;
};
goog.Uri.QueryData.prototype.containsKey = function(key) {
  this.ensureKeyMapInitialized_();
  key = this.getKeyName_(key);
  return this.keyMap_.has(key);
};
goog.Uri.QueryData.prototype.containsValue = function(value) {
  var vals = this.getValues();
  return module$contents$goog$array_contains(vals, value);
};
goog.Uri.QueryData.prototype.forEach = function(f, opt_scope) {
  this.ensureKeyMapInitialized_();
  this.keyMap_.forEach(function(values, key) {
    values.forEach(function(value) {
      f.call(opt_scope, value, key, this);
    }, this);
  }, this);
};
goog.Uri.QueryData.prototype.getKeys = function() {
  this.ensureKeyMapInitialized_();
  for (var vals = Array.from(this.keyMap_.values()), keys = Array.from(this.keyMap_.keys()), rv = [], i = 0; i < keys.length; i++) {
    for (var val = vals[i], j = 0; j < val.length; j++) {
      rv.push(keys[i]);
    }
  }
  return rv;
};
goog.Uri.QueryData.prototype.getValues = function(opt_key) {
  this.ensureKeyMapInitialized_();
  var rv = [];
  if ("string" === typeof opt_key) {
    this.containsKey(opt_key) && (rv = rv.concat(this.keyMap_.get(this.getKeyName_(opt_key))));
  } else {
    for (var values = Array.from(this.keyMap_.values()), i = 0; i < values.length; i++) {
      rv = rv.concat(values[i]);
    }
  }
  return rv;
};
goog.Uri.QueryData.prototype.set = function(key, value) {
  this.ensureKeyMapInitialized_();
  this.invalidateCache_();
  key = this.getKeyName_(key);
  this.containsKey(key) && (this.count_ = goog.asserts.assertNumber(this.count_) - this.keyMap_.get(key).length);
  this.keyMap_.set(key, [value]);
  this.count_ = goog.asserts.assertNumber(this.count_) + 1;
  return this;
};
goog.Uri.QueryData.prototype.get = function(key, opt_default) {
  if (!key) {
    return opt_default;
  }
  var values = this.getValues(key);
  return 0 < values.length ? String(values[0]) : opt_default;
};
goog.Uri.QueryData.prototype.setValues = function(key, values) {
  this.remove(key);
  0 < values.length && (this.invalidateCache_(), this.keyMap_.set(this.getKeyName_(key), module$contents$goog$array_toArray(values)), this.count_ = goog.asserts.assertNumber(this.count_) + values.length);
};
goog.Uri.QueryData.prototype.toString = function() {
  if (this.encodedQuery_) {
    return this.encodedQuery_;
  }
  if (!this.keyMap_) {
    return "";
  }
  for (var sb = [], keys = Array.from(this.keyMap_.keys()), i = 0; i < keys.length; i++) {
    for (var key = keys[i], encodedKey = goog.string.urlEncode(key), val = this.getValues(key), j = 0; j < val.length; j++) {
      var param = encodedKey;
      "" !== val[j] && (param += "=" + goog.string.urlEncode(val[j]));
      sb.push(param);
    }
  }
  return this.encodedQuery_ = sb.join("&");
};
goog.Uri.QueryData.prototype.toDecodedString = function() {
  return goog.Uri.decodeOrEmpty_(this.toString());
};
goog.Uri.QueryData.prototype.invalidateCache_ = function() {
  this.encodedQuery_ = null;
};
goog.Uri.QueryData.prototype.filterKeys = function(keys) {
  this.ensureKeyMapInitialized_();
  this.keyMap_.forEach(function(value, key) {
    module$contents$goog$array_contains(keys, key) || this.remove(key);
  }, this);
  return this;
};
goog.Uri.QueryData.prototype.clone = function() {
  var rv = new goog.Uri.QueryData();
  rv.encodedQuery_ = this.encodedQuery_;
  this.keyMap_ && (rv.keyMap_ = new Map(this.keyMap_), rv.count_ = this.count_);
  return rv;
};
goog.Uri.QueryData.prototype.getKeyName_ = function(arg) {
  var keyName = String(arg);
  this.ignoreCase_ && (keyName = keyName.toLowerCase());
  return keyName;
};
goog.Uri.QueryData.prototype.setIgnoreCase = function(ignoreCase) {
  ignoreCase && !this.ignoreCase_ && (this.ensureKeyMapInitialized_(), this.invalidateCache_(), this.keyMap_.forEach(function(value, key) {
    var lowerCase = key.toLowerCase();
    key != lowerCase && (this.remove(key), this.setValues(lowerCase, value));
  }, this));
  this.ignoreCase_ = ignoreCase;
};
goog.Uri.QueryData.prototype.extend = function(var_args) {
  for (var i = 0; i < arguments.length; i++) {
    goog.structs.forEach(arguments[i], function(value, key) {
      this.add(key, value);
    }, this);
  }
};
var module$exports$goog$net$rpc$HttpCors = {HTTP_HEADERS_PARAM_NAME:"$httpHeaders", HTTP_METHOD_PARAM_NAME:"$httpMethod", generateHttpHeadersOverwriteParam:function(headers) {
  var result = "";
  module$contents$goog$object_forEach(headers, function(value, key) {
    result += key;
    result += ":";
    result += value;
    result += "\r\n";
  });
  return result;
}, generateEncodedHttpHeadersOverwriteParam:function(headers) {
  return goog.string.urlEncode(module$exports$goog$net$rpc$HttpCors.generateHttpHeadersOverwriteParam(headers));
}, setHttpHeadersWithOverwriteParam:function(url, urlParam, extraHeaders) {
  if (module$contents$goog$object_isEmpty(extraHeaders)) {
    return url;
  }
  var httpHeaders = module$exports$goog$net$rpc$HttpCors.generateHttpHeadersOverwriteParam(extraHeaders);
  if ("string" === typeof url) {
    return goog.uri.utils.appendParam(url, goog.string.urlEncode(urlParam), httpHeaders);
  }
  url.setParameterValue(urlParam, httpHeaders);
  return url;
}};
var module$exports$eeapiclient$request_params = {}, module$contents$eeapiclient$request_params_module = module$contents$eeapiclient$request_params_module || {id:"javascript/typescript/contrib/apiclient/core/request_params.closure.js"};
module$exports$eeapiclient$request_params.HttpMethodEnum = {GET:"GET", POST:"POST", PUT:"PUT", PATCH:"PATCH", DELETE:"DELETE"};
module$exports$eeapiclient$request_params.AuthType = {AUTO:"auto", NONE:"none", OAUTH2:"oauth2", FIRST_PARTY:"1p"};
module$exports$eeapiclient$request_params.StreamingType = {NONE:"NONE", CLIENT_SIDE:"CLIENT_SIDE", SERVER_SIDE:"SERVER_SIDE", BIDIRECTONAL:"BIDIRECTONAL"};
function module$contents$eeapiclient$request_params_MakeRequestParams() {
}
module$exports$eeapiclient$request_params.MakeRequestParams = module$contents$eeapiclient$request_params_MakeRequestParams;
function module$contents$eeapiclient$request_params_processParams(params) {
  if (null != params.queryParams) {
    var filteredQueryParams = {}, key;
    for (key in params.queryParams) {
      void 0 !== params.queryParams[key] && (filteredQueryParams[key] = params.queryParams[key]);
    }
    params.queryParams = filteredQueryParams;
  }
}
module$exports$eeapiclient$request_params.processParams = module$contents$eeapiclient$request_params_processParams;
function module$contents$eeapiclient$request_params_buildQueryParams(params, mapping, passthroughParams) {
  for (var urlQueryParams = passthroughParams = void 0 === passthroughParams ? {} : passthroughParams, $jscomp$iter$29 = $jscomp.makeIterator(Object.entries(mapping)), $jscomp$key$m125199259$0$ = $jscomp$iter$29.next(); !$jscomp$key$m125199259$0$.done; $jscomp$key$m125199259$0$ = $jscomp$iter$29.next()) {
    var $jscomp$destructuring$var3 = $jscomp.makeIterator($jscomp$key$m125199259$0$.value), jsName__tsickle_destructured_1 = $jscomp$destructuring$var3.next().value, urlQueryParamName__tsickle_destructured_2 = $jscomp$destructuring$var3.next().value, jsName = jsName__tsickle_destructured_1, urlQueryParamName = urlQueryParamName__tsickle_destructured_2;
    jsName in params && (urlQueryParams[urlQueryParamName] = params[jsName]);
  }
  return urlQueryParams;
}
module$exports$eeapiclient$request_params.buildQueryParams = module$contents$eeapiclient$request_params_buildQueryParams;
var module$contents$eeapiclient$request_params_simpleCorsAllowedHeaders = ["accept", "accept-language", "content-language"], module$contents$eeapiclient$request_params_simpleCorsAllowedMethods = ["GET", "HEAD", "POST"];
module$exports$eeapiclient$request_params.bypassCorsPreflight = function(params) {
  var safeHeaders = {}, unsafeHeaders = {}, hasUnsafeHeaders = !1, hasContentType = !1;
  if (params.headers) {
    hasContentType = null != params.headers["Content-Type"];
    for (var $jscomp$iter$30 = $jscomp.makeIterator(Object.entries(params.headers)), $jscomp$key$m125199259$1$ = $jscomp$iter$30.next(); !$jscomp$key$m125199259$1$.done; $jscomp$key$m125199259$1$ = $jscomp$iter$30.next()) {
      var $jscomp$destructuring$var5 = $jscomp.makeIterator($jscomp$key$m125199259$1$.value), key__tsickle_destructured_3 = $jscomp$destructuring$var5.next().value, value__tsickle_destructured_4 = $jscomp$destructuring$var5.next().value, key = key__tsickle_destructured_3, value = value__tsickle_destructured_4;
      module$contents$eeapiclient$request_params_simpleCorsAllowedHeaders.includes(key) ? safeHeaders[key] = value : (unsafeHeaders[key] = value, hasUnsafeHeaders = !0);
    }
  }
  if (null != params.body || "PUT" === params.httpMethod || "POST" === params.httpMethod) {
    hasContentType || (unsafeHeaders["Content-Type"] = "application/json", hasUnsafeHeaders = !0), safeHeaders["Content-Type"] = "text/plain";
  }
  if (hasUnsafeHeaders) {
    var finalParam = (0,module$exports$goog$net$rpc$HttpCors.generateEncodedHttpHeadersOverwriteParam)(unsafeHeaders);
    module$contents$eeapiclient$request_params_addQueryParameter(params, module$exports$goog$net$rpc$HttpCors.HTTP_HEADERS_PARAM_NAME, finalParam);
  }
  params.headers = safeHeaders;
  module$contents$eeapiclient$request_params_simpleCorsAllowedMethods.includes(params.httpMethod) || (module$contents$eeapiclient$request_params_addQueryParameter(params, module$exports$goog$net$rpc$HttpCors.HTTP_METHOD_PARAM_NAME, params.httpMethod), params.httpMethod = "POST");
};
function module$contents$eeapiclient$request_params_addQueryParameter(params, key, value) {
  if (params.queryParams) {
    params.queryParams[key] = value;
  } else {
    var $jscomp$compprop13 = {};
    params.queryParams = ($jscomp$compprop13[key] = value, $jscomp$compprop13);
  }
}
;var module$exports$eeapiclient$promise_api_client = {}, module$contents$eeapiclient$promise_api_client_module = module$contents$eeapiclient$promise_api_client_module || {id:"javascript/typescript/contrib/apiclient/request_service/promise_api_client.closure.js"};
module$exports$eeapiclient$promise_api_client.PromiseApiClient = function(requestService, hookFactory) {
  this.requestService = requestService;
  this.hookFactory = void 0 === hookFactory ? null : hookFactory;
};
$jscomp.inherits(module$exports$eeapiclient$promise_api_client.PromiseApiClient, module$exports$eeapiclient$api_client.ApiClient);
module$exports$eeapiclient$promise_api_client.PromiseApiClient.prototype.$addHooksToRequest = function(requestParams, promise) {
  return null == module$contents$eeapiclient$api_request_hook_getRequestHook(this.hookFactory, requestParams) ? promise : promise.then(function(response) {
    return response;
  }, function(error) {
    throw error;
  });
};
module$exports$eeapiclient$promise_api_client.PromiseApiClient.prototype.$request = function(requestParams) {
  var responseCtor = requestParams.responseCtor || void 0;
  return this.$addHooksToRequest(requestParams, this.requestService.send(module$contents$eeapiclient$api_client_toMakeRequestParams(requestParams), responseCtor));
};
module$exports$eeapiclient$promise_api_client.PromiseApiClient.prototype.$uploadRequest = function(requestParams) {
  var $jscomp$this$m296226325$4 = this, responseCtor = requestParams.responseCtor || void 0;
  return this.$addHooksToRequest(requestParams, module$contents$eeapiclient$api_client_toMultipartMakeRequestParams(requestParams).then(function(params) {
    return $jscomp$this$m296226325$4.requestService.send(params, responseCtor);
  }));
};
var module$exports$eeapiclient$promise_request_service = {}, module$contents$eeapiclient$promise_request_service_module = module$contents$eeapiclient$promise_request_service_module || {id:"javascript/typescript/contrib/apiclient/request_service/promise_request_service.closure.js"};
module$exports$eeapiclient$promise_request_service.PromiseRequestService = function() {
};
module$exports$eeapiclient$promise_request_service.PromiseRequestService.prototype.send = function(params, responseCtor) {
  module$contents$eeapiclient$request_params_processParams(params);
  return this.makeRequest(params).then(function(response) {
    return responseCtor ? module$contents$eeapiclient$domain_object_deserialize(responseCtor, response) : response;
  });
};
function module$contents$goog$dispose_dispose(obj) {
  obj && "function" == typeof obj.dispose && obj.dispose();
}
goog.dispose = module$contents$goog$dispose_dispose;
function module$contents$goog$disposeAll_disposeAll(var_args) {
  for (var i = 0, len = arguments.length; i < len; ++i) {
    var disposable = arguments[i];
    goog.isArrayLike(disposable) ? module$contents$goog$disposeAll_disposeAll.apply(null, disposable) : module$contents$goog$dispose_dispose(disposable);
  }
}
goog.disposeAll = module$contents$goog$disposeAll_disposeAll;
goog.disposable = {};
goog.disposable.IDisposable = function() {
};
goog.Disposable = function() {
  goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF && (goog.Disposable.INCLUDE_STACK_ON_CREATION && (this.creationStack = Error().stack), goog.Disposable.instances_[goog.getUid(this)] = this);
  this.disposed_ = this.disposed_;
  this.onDisposeCallbacks_ = this.onDisposeCallbacks_;
};
goog.Disposable.MonitoringMode = {OFF:0, PERMANENT:1, INTERACTIVE:2};
goog.Disposable.MONITORING_MODE = 0;
goog.Disposable.INCLUDE_STACK_ON_CREATION = !0;
goog.Disposable.instances_ = {};
goog.Disposable.getUndisposedObjects = function() {
  var ret = [], id;
  for (id in goog.Disposable.instances_) {
    goog.Disposable.instances_.hasOwnProperty(id) && ret.push(goog.Disposable.instances_[Number(id)]);
  }
  return ret;
};
goog.Disposable.clearUndisposedObjects = function() {
  goog.Disposable.instances_ = {};
};
goog.Disposable.prototype.disposed_ = !1;
goog.Disposable.prototype.isDisposed = function() {
  return this.disposed_;
};
goog.Disposable.prototype.getDisposed = goog.Disposable.prototype.isDisposed;
goog.Disposable.prototype.dispose = function() {
  if (!this.disposed_ && (this.disposed_ = !0, this.disposeInternal(), goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF)) {
    var uid = goog.getUid(this);
    if (goog.Disposable.MONITORING_MODE == goog.Disposable.MonitoringMode.PERMANENT && !goog.Disposable.instances_.hasOwnProperty(uid)) {
      throw Error(this + " did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");
    }
    if (goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF && this.onDisposeCallbacks_ && 0 < this.onDisposeCallbacks_.length) {
      throw Error(this + " did not empty its onDisposeCallbacks queue. This probably means it overrode dispose() or disposeInternal() without calling the superclass' method.");
    }
    delete goog.Disposable.instances_[uid];
  }
};
goog.Disposable.prototype.registerDisposable = function(disposable) {
  this.addOnDisposeCallback(goog.partial(module$contents$goog$dispose_dispose, disposable));
};
goog.Disposable.prototype.addOnDisposeCallback = function(callback, opt_scope) {
  this.disposed_ ? void 0 !== opt_scope ? callback.call(opt_scope) : callback() : (this.onDisposeCallbacks_ || (this.onDisposeCallbacks_ = []), this.onDisposeCallbacks_.push(void 0 !== opt_scope ? goog.bind(callback, opt_scope) : callback));
};
goog.Disposable.prototype.disposeInternal = function() {
  if (this.onDisposeCallbacks_) {
    for (; this.onDisposeCallbacks_.length;) {
      this.onDisposeCallbacks_.shift()();
    }
  }
};
goog.Disposable.isDisposed = function(obj) {
  return obj && "function" == typeof obj.isDisposed ? obj.isDisposed() : !1;
};
goog.events = {};
goog.events.EventId = function(eventId) {
  this.id = eventId;
};
goog.events.EventId.prototype.toString = function() {
  return this.id;
};
goog.events.Event = function(type, opt_target) {
  this.type = type instanceof goog.events.EventId ? String(type) : type;
  this.currentTarget = this.target = opt_target;
  this.defaultPrevented = this.propagationStopped_ = !1;
};
goog.events.Event.prototype.hasPropagationStopped = function() {
  return this.propagationStopped_;
};
goog.events.Event.prototype.stopPropagation = function() {
  this.propagationStopped_ = !0;
};
goog.events.Event.prototype.preventDefault = function() {
  this.defaultPrevented = !0;
};
goog.events.Event.stopPropagation = function(e) {
  e.stopPropagation();
};
goog.events.Event.preventDefault = function(e) {
  e.preventDefault();
};
goog.debug.entryPointRegistry = {};
goog.debug.entryPointRegistry.EntryPointMonitor = function() {
};
goog.debug.entryPointRegistry.refList_ = [];
goog.debug.entryPointRegistry.monitors_ = [];
goog.debug.entryPointRegistry.monitorsMayExist_ = !1;
goog.debug.entryPointRegistry.register = function(callback) {
  goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length] = callback;
  if (goog.debug.entryPointRegistry.monitorsMayExist_) {
    for (var monitors = goog.debug.entryPointRegistry.monitors_, i = 0; i < monitors.length; i++) {
      callback(goog.bind(monitors[i].wrap, monitors[i]));
    }
  }
};
goog.debug.entryPointRegistry.monitorAll = function(monitor) {
  goog.debug.entryPointRegistry.monitorsMayExist_ = !0;
  for (var transformer = goog.bind(monitor.wrap, monitor), i = 0; i < goog.debug.entryPointRegistry.refList_.length; i++) {
    goog.debug.entryPointRegistry.refList_[i](transformer);
  }
  goog.debug.entryPointRegistry.monitors_.push(monitor);
};
goog.debug.entryPointRegistry.unmonitorAllIfPossible = function(monitor) {
  var monitors = goog.debug.entryPointRegistry.monitors_;
  goog.asserts.assert(monitor == monitors[monitors.length - 1], "Only the most recent monitor can be unwrapped.");
  for (var transformer = goog.bind(monitor.unwrap, monitor), i = 0; i < goog.debug.entryPointRegistry.refList_.length; i++) {
    goog.debug.entryPointRegistry.refList_[i](transformer);
  }
  monitors.length--;
};
goog.events.BrowserFeature = {TOUCH_ENABLED:"ontouchstart" in goog.global || !!(goog.global.document && document.documentElement && "ontouchstart" in document.documentElement) || !(!goog.global.navigator || !goog.global.navigator.maxTouchPoints && !goog.global.navigator.msMaxTouchPoints), POINTER_EVENTS:"PointerEvent" in goog.global, MSPOINTER_EVENTS:!1, PASSIVE_EVENTS:function(fn) {
  return {valueOf:fn}.valueOf();
}(function() {
  if (!goog.global.addEventListener || !Object.defineProperty) {
    return !1;
  }
  var passive = !1, options = Object.defineProperty({}, "passive", {get:function() {
    passive = !0;
  }});
  try {
    var nullFunction = function() {
    };
    goog.global.addEventListener("test", nullFunction, options);
    goog.global.removeEventListener("test", nullFunction, options);
  } catch (e) {
  }
  return passive;
})};
goog.labs = {};
goog.labs.userAgent = {};
goog.labs.userAgent.chromiumRebrands = {};
goog.labs.userAgent.chromiumRebrands.ChromiumRebrand = {GOOGLE_CHROME:"Google Chrome", BRAVE:"Brave", OPERA:"Opera", EDGE:"Microsoft Edge"};
var module$exports$closure$flags$flags$2etoggles = {}, module$contents$closure$flags$flags$2etoggles_module = module$contents$closure$flags$flags$2etoggles_module || {id:"third_party/javascript/closure/flags/flags.toggles.closure.js"};
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__override_disable_toggles = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_user_agent_client_hints__enable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__async_throw_on_unicode_to_byte__enable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__jspb_stop_using_repeated_field_sets_from_gencode__enable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__client_only_wiz_reaction_async_await__disable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__client_only_wiz_component_stacks__disable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_disabled_flag__enable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_debug_flag__enable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_staging_flag__disable = !1;
module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_stable_flag__disable = !1;
goog.flags = {};
var module$contents$goog$flags_STAGING = goog.readFlagInternalDoNotUseOrElse(1, goog.FLAGS_STAGING_DEFAULT);
goog.flags.USE_USER_AGENT_CLIENT_HINTS = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_user_agent_client_hints__enable : goog.readFlagInternalDoNotUseOrElse(610401301, !1);
goog.flags.ASYNC_THROW_ON_UNICODE_TO_BYTE = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__async_throw_on_unicode_to_byte__enable : goog.readFlagInternalDoNotUseOrElse(899588437, !1);
goog.flags.JSPB_STOP_USING_REPEATED_FIELD_SETS_FROM_GENCODE = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? goog.DEBUG || module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__jspb_stop_using_repeated_field_sets_from_gencode__enable : goog.readFlagInternalDoNotUseOrElse(188588736, goog.DEBUG);
goog.flags.CLIENT_ONLY_WIZ_REACTION_ASYNC_AWAIT = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? goog.FLAGS_STAGING_DEFAULT && (module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__override_disable_toggles || !module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__client_only_wiz_reaction_async_await__disable) : goog.readFlagInternalDoNotUseOrElse(399321843, 
module$contents$goog$flags_STAGING);
goog.flags.CLIENT_ONLY_WIZ_COMPONENT_STACKS = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? goog.FLAGS_STAGING_DEFAULT && (module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__override_disable_toggles || !module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__client_only_wiz_component_stacks__disable) : goog.readFlagInternalDoNotUseOrElse(628162879, module$contents$goog$flags_STAGING);
goog.flags.TESTONLY_DISABLED_FLAG = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_disabled_flag__enable : goog.readFlagInternalDoNotUseOrElse(2147483644, !1);
goog.flags.TESTONLY_DEBUG_FLAG = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? goog.DEBUG || module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_debug_flag__enable : goog.readFlagInternalDoNotUseOrElse(2147483645, goog.DEBUG);
goog.flags.TESTONLY_STAGING_FLAG = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? goog.FLAGS_STAGING_DEFAULT && (module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__override_disable_toggles || !module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_staging_flag__disable) : goog.readFlagInternalDoNotUseOrElse(2147483646, module$contents$goog$flags_STAGING);
goog.flags.TESTONLY_STABLE_FLAG = module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__use_toggles ? module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__override_disable_toggles || !module$exports$closure$flags$flags$2etoggles.TOGGLE_GoogFlags__testonly_stable_flag__disable : goog.readFlagInternalDoNotUseOrElse(2147483647, !0);
var module$contents$goog$labs$userAgent_forceClientHintsInTests = !1;
goog.labs.userAgent.setUseClientHintsForTesting = function(use) {
  module$contents$goog$labs$userAgent_forceClientHintsInTests = use;
};
goog.labs.userAgent.useClientHints = function() {
  return goog.flags.USE_USER_AGENT_CLIENT_HINTS || module$contents$goog$labs$userAgent_forceClientHintsInTests;
};
goog.labs.userAgent.util = {};
function module$contents$goog$labs$userAgent$util_getNativeUserAgentString() {
  var navigator = module$contents$goog$labs$userAgent$util_getNavigator();
  if (navigator) {
    var userAgent = navigator.userAgent;
    if (userAgent) {
      return userAgent;
    }
  }
  return "";
}
function module$contents$goog$labs$userAgent$util_getNativeUserAgentData() {
  var navigator = module$contents$goog$labs$userAgent$util_getNavigator();
  return navigator ? navigator.userAgentData || null : null;
}
function module$contents$goog$labs$userAgent$util_getNavigator() {
  return goog.global.navigator;
}
var module$contents$goog$labs$userAgent$util_userAgentInternal = null, module$contents$goog$labs$userAgent$util_userAgentDataInternal = module$contents$goog$labs$userAgent$util_getNativeUserAgentData();
function module$contents$goog$labs$userAgent$util_getUserAgent() {
  return null == module$contents$goog$labs$userAgent$util_userAgentInternal ? module$contents$goog$labs$userAgent$util_getNativeUserAgentString() : module$contents$goog$labs$userAgent$util_userAgentInternal;
}
function module$contents$goog$labs$userAgent$util_getUserAgentData() {
  return module$contents$goog$labs$userAgent$util_userAgentDataInternal;
}
function module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(str) {
  if (!(0,goog.labs.userAgent.useClientHints)()) {
    return !1;
  }
  var data = module$contents$goog$labs$userAgent$util_getUserAgentData();
  return data ? data.brands.some(function($jscomp$destructuring$var6) {
    var brand = $jscomp$destructuring$var6.brand;
    return brand && (0,goog.string.internal.contains)(brand, str);
  }) : !1;
}
function module$contents$goog$labs$userAgent$util_matchUserAgent(str) {
  return (0,goog.string.internal.contains)(module$contents$goog$labs$userAgent$util_getUserAgent(), str);
}
function module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(str) {
  return (0,goog.string.internal.caseInsensitiveContains)(module$contents$goog$labs$userAgent$util_getUserAgent(), str);
}
function module$contents$goog$labs$userAgent$util_extractVersionTuples(userAgent) {
  for (var versionRegExp = RegExp("([A-Z][\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?", "g"), data = [], match; match = versionRegExp.exec(userAgent);) {
    data.push([match[1], match[2], match[3] || void 0]);
  }
  return data;
}
goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT = !1;
goog.labs.userAgent.util.extractVersionTuples = module$contents$goog$labs$userAgent$util_extractVersionTuples;
goog.labs.userAgent.util.getNativeUserAgentString = module$contents$goog$labs$userAgent$util_getNativeUserAgentString;
goog.labs.userAgent.util.getUserAgent = module$contents$goog$labs$userAgent$util_getUserAgent;
goog.labs.userAgent.util.getUserAgentData = module$contents$goog$labs$userAgent$util_getUserAgentData;
goog.labs.userAgent.util.matchUserAgent = module$contents$goog$labs$userAgent$util_matchUserAgent;
goog.labs.userAgent.util.matchUserAgentDataBrand = module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;
goog.labs.userAgent.util.matchUserAgentIgnoreCase = module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;
goog.labs.userAgent.util.resetUserAgentData = function() {
  module$contents$goog$labs$userAgent$util_userAgentDataInternal = module$contents$goog$labs$userAgent$util_getNativeUserAgentData();
};
goog.labs.userAgent.util.setUserAgent = function(userAgent) {
  module$contents$goog$labs$userAgent$util_userAgentInternal = "string" === typeof userAgent ? userAgent : module$contents$goog$labs$userAgent$util_getNativeUserAgentString();
};
goog.labs.userAgent.util.setUserAgentData = function(userAgentData) {
  module$contents$goog$labs$userAgent$util_userAgentDataInternal = userAgentData;
};
var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue = {AsyncValue:function() {
}};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.AsyncValue.prototype.getIfLoaded = function() {
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.AsyncValue.prototype.load = function() {
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue = function(key) {
  this.key_ = key;
  this.promise_ = this.value_ = void 0;
  this.pending_ = !1;
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue.prototype.getIfLoaded = function() {
  if (module$contents$goog$labs$userAgent$util_getUserAgentData()) {
    return this.value_;
  }
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue.prototype.load = function() {
  var $jscomp$async$this = this, userAgentData;
  return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$m2110036436$14) {
    if (1 == $jscomp$generator$context$m2110036436$14.nextAddress) {
      userAgentData = module$contents$goog$labs$userAgent$util_getUserAgentData();
      if (!userAgentData) {
        return $jscomp$generator$context$m2110036436$14.return(void 0);
      }
      $jscomp$async$this.promise_ || ($jscomp$async$this.pending_ = !0, $jscomp$async$this.promise_ = function() {
        var dataValues;
        return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$m2110036436$13) {
          if (1 == $jscomp$generator$context$m2110036436$13.nextAddress) {
            return $jscomp$generator$context$m2110036436$13.setFinallyBlock(2), $jscomp$generator$context$m2110036436$13.yield(userAgentData.getHighEntropyValues([$jscomp$async$this.key_]), 4);
          }
          if (2 != $jscomp$generator$context$m2110036436$13.nextAddress) {
            return dataValues = $jscomp$generator$context$m2110036436$13.yieldResult, $jscomp$async$this.value_ = dataValues[$jscomp$async$this.key_], $jscomp$generator$context$m2110036436$13.return($jscomp$async$this.value_);
          }
          $jscomp$generator$context$m2110036436$13.enterFinallyBlock();
          $jscomp$async$this.pending_ = !1;
          return $jscomp$generator$context$m2110036436$13.leaveFinallyBlock(0);
        });
      }());
      return $jscomp$generator$context$m2110036436$14.yield($jscomp$async$this.promise_, 2);
    }
    return $jscomp$generator$context$m2110036436$14.return($jscomp$generator$context$m2110036436$14.yieldResult);
  });
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue.prototype.resetForTesting = function() {
  if (this.pending_) {
    throw Error("Unsafe call to resetForTesting");
  }
  this.value_ = this.promise_ = void 0;
  this.pending_ = !1;
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version = function(versionString) {
  this.versionString_ = versionString;
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version.prototype.toVersionStringForLogging = function() {
  return this.versionString_;
};
module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version.prototype.isAtLeast = function(version) {
  return 0 <= (0,goog.string.internal.compareVersions)(this.versionString_, version);
};
var module$exports$goog$labs$userAgent$highEntropy$highEntropyData = {};
module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList = new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");
module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion = new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");
goog.labs.userAgent.browser = {};
var module$contents$goog$labs$userAgent$browser_Brand = {ANDROID_BROWSER:"Android Browser", CHROMIUM:"Chromium", EDGE:"Microsoft Edge", FIREFOX:"Firefox", IE:"Internet Explorer", OPERA:"Opera", SAFARI:"Safari", SILK:"Silk"};
goog.labs.userAgent.browser.Brand = module$contents$goog$labs$userAgent$browser_Brand;
var module$contents$goog$labs$userAgent$browser_AllBrandsInternal;
function module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(ignoreClientHintsFlag) {
  if (!(void 0 !== ignoreClientHintsFlag && ignoreClientHintsFlag || (0,goog.labs.userAgent.useClientHints)())) {
    return !1;
  }
  var userAgentData = module$contents$goog$labs$userAgent$util_getUserAgentData();
  return !!userAgentData && 0 < userAgentData.brands.length;
}
function module$contents$goog$labs$userAgent$browser_hasFullVersionList() {
  return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM, 98);
}
function module$contents$goog$labs$userAgent$browser_matchOpera() {
  return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() ? !1 : module$contents$goog$labs$userAgent$util_matchUserAgent("Opera");
}
function module$contents$goog$labs$userAgent$browser_matchIE() {
  return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() ? !1 : module$contents$goog$labs$userAgent$util_matchUserAgent("Trident") || module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE");
}
function module$contents$goog$labs$userAgent$browser_matchEdgeHtml() {
  return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() ? !1 : module$contents$goog$labs$userAgent$util_matchUserAgent("Edge");
}
function module$contents$goog$labs$userAgent$browser_matchEdgeChromium() {
  return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() ? module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE) : module$contents$goog$labs$userAgent$util_matchUserAgent("Edg/");
}
function module$contents$goog$labs$userAgent$browser_matchOperaChromium() {
  return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() ? module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA) : module$contents$goog$labs$userAgent$util_matchUserAgent("OPR");
}
function module$contents$goog$labs$userAgent$browser_matchFirefox() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Firefox") || module$contents$goog$labs$userAgent$util_matchUserAgent("FxiOS");
}
function module$contents$goog$labs$userAgent$browser_matchSafari() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Safari") && !(module$contents$goog$labs$userAgent$browser_matchChrome() || module$contents$goog$labs$userAgent$browser_matchCoast() || module$contents$goog$labs$userAgent$browser_matchOpera() || module$contents$goog$labs$userAgent$browser_matchEdgeHtml() || module$contents$goog$labs$userAgent$browser_matchEdgeChromium() || module$contents$goog$labs$userAgent$browser_matchOperaChromium() || module$contents$goog$labs$userAgent$browser_matchFirefox() || 
  module$contents$goog$labs$userAgent$browser_isSilk() || module$contents$goog$labs$userAgent$util_matchUserAgent("Android"));
}
function module$contents$goog$labs$userAgent$browser_matchCoast() {
  return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() ? !1 : module$contents$goog$labs$userAgent$util_matchUserAgent("Coast");
}
function module$contents$goog$labs$userAgent$browser_matchChrome() {
  return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() ? module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM) : (module$contents$goog$labs$userAgent$util_matchUserAgent("Chrome") || module$contents$goog$labs$userAgent$util_matchUserAgent("CriOS")) && !module$contents$goog$labs$userAgent$browser_matchEdgeHtml() || module$contents$goog$labs$userAgent$browser_isSilk();
}
function module$contents$goog$labs$userAgent$browser_matchAndroidBrowser() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Android") && !(module$contents$goog$labs$userAgent$browser_matchChrome() || module$contents$goog$labs$userAgent$browser_matchFirefox() || module$contents$goog$labs$userAgent$browser_matchOpera() || module$contents$goog$labs$userAgent$browser_isSilk());
}
var module$contents$goog$labs$userAgent$browser_isOpera = module$contents$goog$labs$userAgent$browser_matchOpera;
goog.labs.userAgent.browser.isOpera = module$contents$goog$labs$userAgent$browser_matchOpera;
var module$contents$goog$labs$userAgent$browser_isIE = module$contents$goog$labs$userAgent$browser_matchIE;
goog.labs.userAgent.browser.isIE = module$contents$goog$labs$userAgent$browser_matchIE;
var module$contents$goog$labs$userAgent$browser_isEdge = module$contents$goog$labs$userAgent$browser_matchEdgeHtml;
goog.labs.userAgent.browser.isEdge = module$contents$goog$labs$userAgent$browser_matchEdgeHtml;
var module$contents$goog$labs$userAgent$browser_isEdgeChromium = module$contents$goog$labs$userAgent$browser_matchEdgeChromium;
goog.labs.userAgent.browser.isEdgeChromium = module$contents$goog$labs$userAgent$browser_matchEdgeChromium;
var module$contents$goog$labs$userAgent$browser_isOperaChromium = module$contents$goog$labs$userAgent$browser_matchOperaChromium;
goog.labs.userAgent.browser.isOperaChromium = module$contents$goog$labs$userAgent$browser_matchOperaChromium;
var module$contents$goog$labs$userAgent$browser_isFirefox = module$contents$goog$labs$userAgent$browser_matchFirefox;
goog.labs.userAgent.browser.isFirefox = module$contents$goog$labs$userAgent$browser_matchFirefox;
var module$contents$goog$labs$userAgent$browser_isSafari = module$contents$goog$labs$userAgent$browser_matchSafari;
goog.labs.userAgent.browser.isSafari = module$contents$goog$labs$userAgent$browser_matchSafari;
var module$contents$goog$labs$userAgent$browser_isCoast = module$contents$goog$labs$userAgent$browser_matchCoast;
goog.labs.userAgent.browser.isCoast = module$contents$goog$labs$userAgent$browser_matchCoast;
goog.labs.userAgent.browser.isIosWebview = function() {
  return (module$contents$goog$labs$userAgent$util_matchUserAgent("iPad") || module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone")) && !module$contents$goog$labs$userAgent$browser_matchSafari() && !module$contents$goog$labs$userAgent$browser_matchChrome() && !module$contents$goog$labs$userAgent$browser_matchCoast() && !module$contents$goog$labs$userAgent$browser_matchFirefox() && module$contents$goog$labs$userAgent$util_matchUserAgent("AppleWebKit");
};
var module$contents$goog$labs$userAgent$browser_isChrome = module$contents$goog$labs$userAgent$browser_matchChrome;
goog.labs.userAgent.browser.isChrome = module$contents$goog$labs$userAgent$browser_matchChrome;
var module$contents$goog$labs$userAgent$browser_isAndroidBrowser = module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;
goog.labs.userAgent.browser.isAndroidBrowser = module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;
function module$contents$goog$labs$userAgent$browser_isSilk() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Silk");
}
goog.labs.userAgent.browser.isSilk = module$contents$goog$labs$userAgent$browser_isSilk;
function module$contents$goog$labs$userAgent$browser_createVersionMap(versionTuples) {
  var versionMap = {};
  versionTuples.forEach(function(tuple) {
    versionMap[tuple[0]] = tuple[1];
  });
  return function(keys) {
    return versionMap[keys.find(function(key) {
      return key in versionMap;
    })] || "";
  };
}
function module$contents$goog$labs$userAgent$browser_getVersion() {
  var userAgentString = module$contents$goog$labs$userAgent$util_getUserAgent();
  if (module$contents$goog$labs$userAgent$browser_matchIE()) {
    return module$contents$goog$labs$userAgent$browser_getIEVersion(userAgentString);
  }
  var versionTuples = module$contents$goog$labs$userAgent$util_extractVersionTuples(userAgentString), lookUpValueWithKeys = module$contents$goog$labs$userAgent$browser_createVersionMap(versionTuples);
  if (module$contents$goog$labs$userAgent$browser_matchOpera()) {
    return lookUpValueWithKeys(["Version", "Opera"]);
  }
  if (module$contents$goog$labs$userAgent$browser_matchEdgeHtml()) {
    return lookUpValueWithKeys(["Edge"]);
  }
  if (module$contents$goog$labs$userAgent$browser_matchEdgeChromium()) {
    return lookUpValueWithKeys(["Edg"]);
  }
  if (module$contents$goog$labs$userAgent$browser_isSilk()) {
    return lookUpValueWithKeys(["Silk"]);
  }
  if (module$contents$goog$labs$userAgent$browser_matchChrome()) {
    return lookUpValueWithKeys(["Chrome", "CriOS", "HeadlessChrome"]);
  }
  var tuple = versionTuples[2];
  return tuple && tuple[1] || "";
}
goog.labs.userAgent.browser.getVersion = module$contents$goog$labs$userAgent$browser_getVersion;
goog.labs.userAgent.browser.isVersionOrHigher = function(version) {
  return 0 <= (0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(), version);
};
function module$contents$goog$labs$userAgent$browser_getIEVersion(userAgent) {
  var rv = /rv: *([\d\.]*)/.exec(userAgent);
  if (rv && rv[1]) {
    return rv[1];
  }
  var version = "", msie = /MSIE +([\d\.]+)/.exec(userAgent);
  if (msie && msie[1]) {
    var tridentVersion = /Trident\/(\d.\d)/.exec(userAgent);
    if ("7.0" == msie[1]) {
      if (tridentVersion && tridentVersion[1]) {
        switch(tridentVersion[1]) {
          case "4.0":
            version = "8.0";
            break;
          case "5.0":
            version = "9.0";
            break;
          case "6.0":
            version = "10.0";
            break;
          case "7.0":
            version = "11.0";
        }
      } else {
        version = "7.0";
      }
    } else {
      version = msie[1];
    }
  }
  return version;
}
function module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(browser) {
  var userAgentString = module$contents$goog$labs$userAgent$util_getUserAgent();
  if (browser === module$contents$goog$labs$userAgent$browser_Brand.IE) {
    return module$contents$goog$labs$userAgent$browser_matchIE() ? module$contents$goog$labs$userAgent$browser_getIEVersion(userAgentString) : "";
  }
  var versionTuples = module$contents$goog$labs$userAgent$util_extractVersionTuples(userAgentString), lookUpValueWithKeys = module$contents$goog$labs$userAgent$browser_createVersionMap(versionTuples);
  switch(browser) {
    case module$contents$goog$labs$userAgent$browser_Brand.OPERA:
      if (module$contents$goog$labs$userAgent$browser_matchOpera()) {
        return lookUpValueWithKeys(["Version", "Opera"]);
      }
      if (module$contents$goog$labs$userAgent$browser_matchOperaChromium()) {
        return lookUpValueWithKeys(["OPR"]);
      }
      break;
    case module$contents$goog$labs$userAgent$browser_Brand.EDGE:
      if (module$contents$goog$labs$userAgent$browser_matchEdgeHtml()) {
        return lookUpValueWithKeys(["Edge"]);
      }
      if (module$contents$goog$labs$userAgent$browser_matchEdgeChromium()) {
        return lookUpValueWithKeys(["Edg"]);
      }
      break;
    case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:
      if (module$contents$goog$labs$userAgent$browser_matchChrome()) {
        return lookUpValueWithKeys(["Chrome", "CriOS", "HeadlessChrome"]);
      }
  }
  if (browser === module$contents$goog$labs$userAgent$browser_Brand.FIREFOX && module$contents$goog$labs$userAgent$browser_matchFirefox() || browser === module$contents$goog$labs$userAgent$browser_Brand.SAFARI && module$contents$goog$labs$userAgent$browser_matchSafari() || browser === module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER && module$contents$goog$labs$userAgent$browser_matchAndroidBrowser() || browser === module$contents$goog$labs$userAgent$browser_Brand.SILK && module$contents$goog$labs$userAgent$browser_isSilk()) {
    var tuple = versionTuples[2];
    return tuple && tuple[1] || "";
  }
  return "";
}
function module$contents$goog$labs$userAgent$browser_versionOf_(browser) {
  if (module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand() && browser !== module$contents$goog$labs$userAgent$browser_Brand.SILK) {
    var matchingBrand = module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(function($jscomp$destructuring$var8) {
      return $jscomp$destructuring$var8.brand === browser;
    });
    if (!matchingBrand || !matchingBrand.version) {
      return NaN;
    }
    var versionParts = matchingBrand.version.split(".");
  } else {
    var fullVersion = module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(browser);
    if ("" === fullVersion) {
      return NaN;
    }
    versionParts = fullVersion.split(".");
  }
  return 0 === versionParts.length ? NaN : Number(versionParts[0]);
}
function module$contents$goog$labs$userAgent$browser_isAtLeast(brand, majorVersion) {
  (0,goog.asserts.assert)(Math.floor(majorVersion) === majorVersion, "Major version must be an integer");
  return module$contents$goog$labs$userAgent$browser_versionOf_(brand) >= majorVersion;
}
goog.labs.userAgent.browser.isAtLeast = module$contents$goog$labs$userAgent$browser_isAtLeast;
goog.labs.userAgent.browser.isAtMost = function(brand, majorVersion) {
  (0,goog.asserts.assert)(Math.floor(majorVersion) === majorVersion, "Major version must be an integer");
  return module$contents$goog$labs$userAgent$browser_versionOf_(brand) <= majorVersion;
};
var module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion = function(brand, useUach, fallbackVersion) {
  this.brand_ = brand;
  this.version_ = new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(fallbackVersion);
  this.useUach_ = useUach;
};
module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion.prototype.getIfLoaded = function() {
  var $jscomp$this$1683157560$24 = this;
  if (this.useUach_) {
    var loadedVersionList = module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();
    if (void 0 !== loadedVersionList) {
      var matchingBrand = loadedVersionList.find(function($jscomp$destructuring$var10) {
        return $jscomp$this$1683157560$24.brand_ === $jscomp$destructuring$var10.brand;
      });
      (0,goog.asserts.assertExists)(matchingBrand);
      return new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(matchingBrand.version);
    }
  }
  if (module$contents$goog$labs$userAgent$browser_preUachHasLoaded) {
    return this.version_;
  }
};
module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion.prototype.load = function() {
  var $jscomp$async$this = this, loadedVersionList, matchingBrand;
  return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$1683157560$31) {
    if (1 == $jscomp$generator$context$1683157560$31.nextAddress) {
      return $jscomp$async$this.useUach_ ? $jscomp$generator$context$1683157560$31.yield(module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load(), 5) : $jscomp$generator$context$1683157560$31.yield(0, 3);
    }
    if (3 != $jscomp$generator$context$1683157560$31.nextAddress && (loadedVersionList = $jscomp$generator$context$1683157560$31.yieldResult, void 0 !== loadedVersionList)) {
      return matchingBrand = loadedVersionList.find(function($jscomp$destructuring$var12) {
        return $jscomp$async$this.brand_ === $jscomp$destructuring$var12.brand;
      }), (0,goog.asserts.assertExists)(matchingBrand), $jscomp$generator$context$1683157560$31.return(new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(matchingBrand.version));
    }
    module$contents$goog$labs$userAgent$browser_preUachHasLoaded = !0;
    return $jscomp$generator$context$1683157560$31.return($jscomp$async$this.version_);
  });
};
var module$contents$goog$labs$userAgent$browser_preUachHasLoaded = !1;
goog.labs.userAgent.browser.loadFullVersions = function() {
  return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$1683157560$32) {
    if (1 == $jscomp$generator$context$1683157560$32.nextAddress) {
      return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0) ? $jscomp$generator$context$1683157560$32.yield(module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load(), 2) : $jscomp$generator$context$1683157560$32.jumpTo(2);
    }
    module$contents$goog$labs$userAgent$browser_preUachHasLoaded = !0;
    $jscomp$generator$context$1683157560$32.jumpToEnd();
  });
};
goog.labs.userAgent.browser.resetForTesting = function() {
  module$contents$goog$labs$userAgent$browser_preUachHasLoaded = !1;
  module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting();
};
function module$contents$goog$labs$userAgent$browser_fullVersionOf(browser) {
  var fallbackVersionString = "";
  module$contents$goog$labs$userAgent$browser_hasFullVersionList() || (fallbackVersionString = module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(browser));
  var useUach = browser !== module$contents$goog$labs$userAgent$browser_Brand.SILK && module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);
  if (useUach) {
    if (!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(function($jscomp$destructuring$var14) {
      return $jscomp$destructuring$var14.brand === browser;
    })) {
      return;
    }
  } else if ("" === fallbackVersionString) {
    return;
  }
  return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(browser, useUach, fallbackVersionString);
}
goog.labs.userAgent.browser.fullVersionOf = module$contents$goog$labs$userAgent$browser_fullVersionOf;
goog.labs.userAgent.browser.getVersionStringForLogging = function(browser) {
  if (module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)) {
    var fullVersionObj = module$contents$goog$labs$userAgent$browser_fullVersionOf(browser);
    if (fullVersionObj) {
      var fullVersion = fullVersionObj.getIfLoaded();
      if (fullVersion) {
        return fullVersion.toVersionStringForLogging();
      }
      var matchingBrand = module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(function($jscomp$destructuring$var16) {
        return $jscomp$destructuring$var16.brand === browser;
      });
      (0,goog.asserts.assertExists)(matchingBrand);
      return matchingBrand.version;
    }
    return "";
  }
  return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(browser);
};
goog.labs.userAgent.engine = {};
function module$contents$goog$labs$userAgent$engine_isPresto() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Presto");
}
function module$contents$goog$labs$userAgent$engine_isTrident() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Trident") || module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE");
}
function module$contents$goog$labs$userAgent$engine_isEdge() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Edge");
}
function module$contents$goog$labs$userAgent$engine_isWebKit() {
  return module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase("WebKit") && !module$contents$goog$labs$userAgent$engine_isEdge();
}
function module$contents$goog$labs$userAgent$engine_isGecko() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("Gecko") && !module$contents$goog$labs$userAgent$engine_isWebKit() && !module$contents$goog$labs$userAgent$engine_isTrident() && !module$contents$goog$labs$userAgent$engine_isEdge();
}
function module$contents$goog$labs$userAgent$engine_getVersion() {
  var userAgentString = module$contents$goog$labs$userAgent$util_getUserAgent();
  if (userAgentString) {
    var tuples = module$contents$goog$labs$userAgent$util_extractVersionTuples(userAgentString), engineTuple = module$contents$goog$labs$userAgent$engine_getEngineTuple(tuples);
    if (engineTuple) {
      return "Gecko" == engineTuple[0] ? module$contents$goog$labs$userAgent$engine_getVersionForKey(tuples, "Firefox") : engineTuple[1];
    }
    var browserTuple = tuples[0], info;
    if (browserTuple && (info = browserTuple[2])) {
      var match = /Trident\/([^\s;]+)/.exec(info);
      if (match) {
        return match[1];
      }
    }
  }
  return "";
}
function module$contents$goog$labs$userAgent$engine_getEngineTuple(tuples) {
  if (!module$contents$goog$labs$userAgent$engine_isEdge()) {
    return tuples[1];
  }
  for (var i = 0; i < tuples.length; i++) {
    var tuple = tuples[i];
    if ("Edge" == tuple[0]) {
      return tuple;
    }
  }
}
function module$contents$goog$labs$userAgent$engine_getVersionForKey(tuples, key) {
  var pair = module$contents$goog$array_find(tuples, function(pair) {
    return key == pair[0];
  });
  return pair && pair[1] || "";
}
goog.labs.userAgent.engine.getVersion = module$contents$goog$labs$userAgent$engine_getVersion;
goog.labs.userAgent.engine.isEdge = module$contents$goog$labs$userAgent$engine_isEdge;
goog.labs.userAgent.engine.isGecko = module$contents$goog$labs$userAgent$engine_isGecko;
goog.labs.userAgent.engine.isPresto = module$contents$goog$labs$userAgent$engine_isPresto;
goog.labs.userAgent.engine.isTrident = module$contents$goog$labs$userAgent$engine_isTrident;
goog.labs.userAgent.engine.isVersionOrHigher = function(version) {
  return 0 <= goog.string.internal.compareVersions(module$contents$goog$labs$userAgent$engine_getVersion(), version);
};
goog.labs.userAgent.engine.isWebKit = module$contents$goog$labs$userAgent$engine_isWebKit;
goog.labs.userAgent.platform = {};
function module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform(ignoreClientHintsFlag) {
  if (!(void 0 !== ignoreClientHintsFlag && ignoreClientHintsFlag || (0,goog.labs.userAgent.useClientHints)())) {
    return !1;
  }
  var userAgentData = module$contents$goog$labs$userAgent$util_getUserAgentData();
  return !!userAgentData && !!userAgentData.platform;
}
function module$contents$goog$labs$userAgent$platform_isAndroid() {
  return module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform() ? "Android" === module$contents$goog$labs$userAgent$util_getUserAgentData().platform : module$contents$goog$labs$userAgent$util_matchUserAgent("Android");
}
function module$contents$goog$labs$userAgent$platform_isIpod() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("iPod");
}
function module$contents$goog$labs$userAgent$platform_isIphone() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone") && !module$contents$goog$labs$userAgent$util_matchUserAgent("iPod") && !module$contents$goog$labs$userAgent$util_matchUserAgent("iPad");
}
function module$contents$goog$labs$userAgent$platform_isIpad() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("iPad");
}
function module$contents$goog$labs$userAgent$platform_isIos() {
  return module$contents$goog$labs$userAgent$platform_isIphone() || module$contents$goog$labs$userAgent$platform_isIpad() || module$contents$goog$labs$userAgent$platform_isIpod();
}
function module$contents$goog$labs$userAgent$platform_isMacintosh() {
  return module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform() ? "macOS" === module$contents$goog$labs$userAgent$util_getUserAgentData().platform : module$contents$goog$labs$userAgent$util_matchUserAgent("Macintosh");
}
function module$contents$goog$labs$userAgent$platform_isLinux() {
  return module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform() ? "Linux" === module$contents$goog$labs$userAgent$util_getUserAgentData().platform : module$contents$goog$labs$userAgent$util_matchUserAgent("Linux");
}
function module$contents$goog$labs$userAgent$platform_isWindows() {
  return module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform() ? "Windows" === module$contents$goog$labs$userAgent$util_getUserAgentData().platform : module$contents$goog$labs$userAgent$util_matchUserAgent("Windows");
}
function module$contents$goog$labs$userAgent$platform_isChromeOS() {
  return module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform() ? "Chrome OS" === module$contents$goog$labs$userAgent$util_getUserAgentData().platform : module$contents$goog$labs$userAgent$util_matchUserAgent("CrOS");
}
function module$contents$goog$labs$userAgent$platform_isKaiOS() {
  return module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase("KaiOS");
}
function module$contents$goog$labs$userAgent$platform_getVersion() {
  var userAgentString = module$contents$goog$labs$userAgent$util_getUserAgent(), version = "";
  if (module$contents$goog$labs$userAgent$platform_isWindows()) {
    var re = /Windows (?:NT|Phone) ([0-9.]+)/;
    var match = re.exec(userAgentString);
    version = match ? match[1] : "0.0";
  } else if (module$contents$goog$labs$userAgent$platform_isIos()) {
    re = /(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/;
    var match$jscomp$0 = re.exec(userAgentString);
    version = match$jscomp$0 && match$jscomp$0[1].replace(/_/g, ".");
  } else if (module$contents$goog$labs$userAgent$platform_isMacintosh()) {
    re = /Mac OS X ([0-9_.]+)/;
    var match$jscomp$1 = re.exec(userAgentString);
    version = match$jscomp$1 ? match$jscomp$1[1].replace(/_/g, ".") : "10";
  } else if (module$contents$goog$labs$userAgent$platform_isKaiOS()) {
    re = /(?:KaiOS)\/(\S+)/i;
    var match$jscomp$2 = re.exec(userAgentString);
    version = match$jscomp$2 && match$jscomp$2[1];
  } else if (module$contents$goog$labs$userAgent$platform_isAndroid()) {
    re = /Android\s+([^\);]+)(\)|;)/;
    var match$jscomp$3 = re.exec(userAgentString);
    version = match$jscomp$3 && match$jscomp$3[1];
  } else if (module$contents$goog$labs$userAgent$platform_isChromeOS()) {
    re = /(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/;
    var match$jscomp$4 = re.exec(userAgentString);
    version = match$jscomp$4 && match$jscomp$4[1];
  }
  return version || "";
}
var module$contents$goog$labs$userAgent$platform_PlatformVersion = function() {
  this.preUachHasLoaded_ = !1;
};
module$contents$goog$labs$userAgent$platform_PlatformVersion.prototype.getIfLoaded = function() {
  if (module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform(!0)) {
    var loadedPlatformVersion = module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion.getIfLoaded();
    return void 0 === loadedPlatformVersion ? void 0 : new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(loadedPlatformVersion);
  }
  if (this.preUachHasLoaded_) {
    return new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(module$contents$goog$labs$userAgent$platform_getVersion());
  }
};
module$contents$goog$labs$userAgent$platform_PlatformVersion.prototype.load = function() {
  var $jscomp$async$this = this, JSCompiler_temp_const;
  return $jscomp.asyncExecutePromiseGeneratorProgram(function($jscomp$generator$context$m1628565157$0) {
    if (1 == $jscomp$generator$context$m1628565157$0.nextAddress) {
      if (!module$contents$goog$labs$userAgent$platform_useUserAgentDataPlatform(!0)) {
        $jscomp$async$this.preUachHasLoaded_ = !0;
        return $jscomp$generator$context$m1628565157$0.return(new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(module$contents$goog$labs$userAgent$platform_getVersion()));
        return $jscomp$generator$context$m1628565157$0.jumpTo(0);
      }
      JSCompiler_temp_const = module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version;
      return $jscomp$generator$context$m1628565157$0.yield(module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion.load(), 3);
    }
    return $jscomp$generator$context$m1628565157$0.return(new JSCompiler_temp_const($jscomp$generator$context$m1628565157$0.yieldResult));
  });
};
module$contents$goog$labs$userAgent$platform_PlatformVersion.prototype.resetForTesting = function() {
  module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion.resetForTesting();
  this.preUachHasLoaded_ = !1;
};
var module$contents$goog$labs$userAgent$platform_version = new module$contents$goog$labs$userAgent$platform_PlatformVersion();
goog.labs.userAgent.platform.getVersion = module$contents$goog$labs$userAgent$platform_getVersion;
goog.labs.userAgent.platform.isAndroid = module$contents$goog$labs$userAgent$platform_isAndroid;
goog.labs.userAgent.platform.isChromeOS = module$contents$goog$labs$userAgent$platform_isChromeOS;
goog.labs.userAgent.platform.isChromecast = function() {
  return module$contents$goog$labs$userAgent$util_matchUserAgent("CrKey");
};
goog.labs.userAgent.platform.isIos = module$contents$goog$labs$userAgent$platform_isIos;
goog.labs.userAgent.platform.isIpad = module$contents$goog$labs$userAgent$platform_isIpad;
goog.labs.userAgent.platform.isIphone = module$contents$goog$labs$userAgent$platform_isIphone;
goog.labs.userAgent.platform.isIpod = module$contents$goog$labs$userAgent$platform_isIpod;
goog.labs.userAgent.platform.isKaiOS = module$contents$goog$labs$userAgent$platform_isKaiOS;
goog.labs.userAgent.platform.isLinux = module$contents$goog$labs$userAgent$platform_isLinux;
goog.labs.userAgent.platform.isMacintosh = module$contents$goog$labs$userAgent$platform_isMacintosh;
goog.labs.userAgent.platform.isVersionOrHigher = function(version) {
  return 0 <= goog.string.internal.compareVersions(module$contents$goog$labs$userAgent$platform_getVersion(), version);
};
goog.labs.userAgent.platform.isWindows = module$contents$goog$labs$userAgent$platform_isWindows;
goog.labs.userAgent.platform.version = module$contents$goog$labs$userAgent$platform_version;
goog.reflect = {};
goog.reflect.object = function(type, object) {
  return object;
};
goog.reflect.objectProperty = function(prop, object) {
  return prop;
};
goog.reflect.sinkValue = function(x) {
  goog.reflect.sinkValue[" "](x);
  return x;
};
goog.reflect.sinkValue[" "] = function() {
};
goog.reflect.canAccessProperty = function(obj, prop) {
  try {
    return goog.reflect.sinkValue(obj[prop]), !0;
  } catch (e) {
  }
  return !1;
};
goog.reflect.cache = function(cacheObj, key, valueFn, opt_keyFn) {
  var storedKey = opt_keyFn ? opt_keyFn(key) : key;
  return Object.prototype.hasOwnProperty.call(cacheObj, storedKey) ? cacheObj[storedKey] : cacheObj[storedKey] = valueFn(key);
};
goog.userAgent = {};
goog.userAgent.ASSUME_IE = !1;
goog.userAgent.ASSUME_EDGE = !1;
goog.userAgent.ASSUME_GECKO = !1;
goog.userAgent.ASSUME_WEBKIT = !1;
goog.userAgent.ASSUME_MOBILE_WEBKIT = !1;
goog.userAgent.ASSUME_OPERA = !1;
goog.userAgent.ASSUME_ANY_VERSION = !1;
goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_GECKO || goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_OPERA;
goog.userAgent.getUserAgentString = function() {
  return module$contents$goog$labs$userAgent$util_getUserAgent();
};
goog.userAgent.getNavigatorTyped = function() {
  return goog.global.navigator || null;
};
goog.userAgent.getNavigator = function() {
  return goog.userAgent.getNavigatorTyped();
};
goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_OPERA : module$contents$goog$labs$userAgent$browser_matchOpera();
goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_IE : module$contents$goog$labs$userAgent$browser_matchIE();
goog.userAgent.EDGE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_EDGE : module$contents$goog$labs$userAgent$engine_isEdge();
goog.userAgent.EDGE_OR_IE = goog.userAgent.EDGE || goog.userAgent.IE;
goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_GECKO : module$contents$goog$labs$userAgent$engine_isGecko();
goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT : module$contents$goog$labs$userAgent$engine_isWebKit();
goog.userAgent.isMobile_ = function() {
  return goog.userAgent.WEBKIT && module$contents$goog$labs$userAgent$util_matchUserAgent("Mobile");
};
goog.userAgent.MOBILE = goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.isMobile_();
goog.userAgent.SAFARI = goog.userAgent.WEBKIT;
goog.userAgent.determinePlatform_ = function() {
  var navigator = goog.userAgent.getNavigatorTyped();
  return navigator && navigator.platform || "";
};
goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_();
goog.userAgent.ASSUME_MAC = !1;
goog.userAgent.ASSUME_WINDOWS = !1;
goog.userAgent.ASSUME_LINUX = !1;
goog.userAgent.ASSUME_ANDROID = !1;
goog.userAgent.ASSUME_IPHONE = !1;
goog.userAgent.ASSUME_IPAD = !1;
goog.userAgent.ASSUME_IPOD = !1;
goog.userAgent.ASSUME_KAIOS = !1;
goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC || goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX || goog.userAgent.ASSUME_ANDROID || goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD;
goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : module$contents$goog$labs$userAgent$platform_isMacintosh();
goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : module$contents$goog$labs$userAgent$platform_isWindows();
goog.userAgent.isLegacyLinux_ = function() {
  return module$contents$goog$labs$userAgent$platform_isLinux() || module$contents$goog$labs$userAgent$platform_isChromeOS();
};
goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.isLegacyLinux_();
goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : module$contents$goog$labs$userAgent$platform_isAndroid();
goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : module$contents$goog$labs$userAgent$platform_isIphone();
goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : module$contents$goog$labs$userAgent$platform_isIpad();
goog.userAgent.IPOD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPOD : module$contents$goog$labs$userAgent$platform_isIpod();
goog.userAgent.IOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD : module$contents$goog$labs$userAgent$platform_isIos();
goog.userAgent.KAIOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_KAIOS : module$contents$goog$labs$userAgent$platform_isKaiOS();
goog.userAgent.determineVersion_ = function() {
  var version = "", arr = goog.userAgent.getVersionRegexResult_();
  arr && (version = arr ? arr[1] : "");
  if (goog.userAgent.IE) {
    var docMode = goog.userAgent.getDocumentMode_();
    if (null != docMode && docMode > parseFloat(version)) {
      return String(docMode);
    }
  }
  return version;
};
goog.userAgent.getVersionRegexResult_ = function() {
  var userAgent = goog.userAgent.getUserAgentString();
  if (goog.userAgent.GECKO) {
    return /rv:([^\);]+)(\)|;)/.exec(userAgent);
  }
  if (goog.userAgent.EDGE) {
    return /Edge\/([\d\.]+)/.exec(userAgent);
  }
  if (goog.userAgent.IE) {
    return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(userAgent);
  }
  if (goog.userAgent.WEBKIT) {
    return /WebKit\/(\S+)/.exec(userAgent);
  }
  if (goog.userAgent.OPERA) {
    return /(?:Version)[ \/]?(\S+)/.exec(userAgent);
  }
};
goog.userAgent.getDocumentMode_ = function() {
  var doc = goog.global.document;
  return doc ? doc.documentMode : void 0;
};
goog.userAgent.VERSION = goog.userAgent.determineVersion_();
goog.userAgent.compare = function(v1, v2) {
  return goog.string.internal.compareVersions(v1, v2);
};
goog.userAgent.isVersionOrHigherCache_ = {};
goog.userAgent.isVersionOrHigher = function(version) {
  return goog.userAgent.ASSUME_ANY_VERSION || goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_, version, function() {
    return 0 <= goog.string.internal.compareVersions(goog.userAgent.VERSION, version);
  });
};
goog.userAgent.isDocumentModeOrHigher = function(documentMode) {
  return Number(goog.userAgent.DOCUMENT_MODE) >= documentMode;
};
goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher;
goog.userAgent.DOCUMENT_MODE = function() {
  if (goog.global.document && goog.userAgent.IE) {
    var documentMode = goog.userAgent.getDocumentMode_();
    return documentMode ? documentMode : parseInt(goog.userAgent.VERSION, 10) || void 0;
  }
}();
goog.events.eventTypeHelpers = {};
goog.events.eventTypeHelpers.getVendorPrefixedName = function(eventName) {
  return goog.userAgent.WEBKIT ? "webkit" + eventName : eventName.toLowerCase();
};
goog.events.eventTypeHelpers.getPointerFallbackEventName = function(pointerEventName, msPointerEventName, fallbackEventName) {
  return goog.events.BrowserFeature.POINTER_EVENTS ? pointerEventName : goog.events.BrowserFeature.MSPOINTER_EVENTS ? msPointerEventName : fallbackEventName;
};
goog.events.EventType = {CLICK:"click", RIGHTCLICK:"rightclick", DBLCLICK:"dblclick", AUXCLICK:"auxclick", MOUSEDOWN:"mousedown", MOUSEUP:"mouseup", MOUSEOVER:"mouseover", MOUSEOUT:"mouseout", MOUSEMOVE:"mousemove", MOUSEENTER:"mouseenter", MOUSELEAVE:"mouseleave", MOUSECANCEL:"mousecancel", SELECTIONCHANGE:"selectionchange", SELECTSTART:"selectstart", WHEEL:"wheel", KEYPRESS:"keypress", KEYDOWN:"keydown", KEYUP:"keyup", BLUR:"blur", FOCUS:"focus", DEACTIVATE:"deactivate", FOCUSIN:"focusin", FOCUSOUT:"focusout", 
CHANGE:"change", RESET:"reset", SELECT:"select", SUBMIT:"submit", INPUT:"input", PROPERTYCHANGE:"propertychange", DRAGSTART:"dragstart", DRAG:"drag", DRAGENTER:"dragenter", DRAGOVER:"dragover", DRAGLEAVE:"dragleave", DROP:"drop", DRAGEND:"dragend", TOUCHSTART:"touchstart", TOUCHMOVE:"touchmove", TOUCHEND:"touchend", TOUCHCANCEL:"touchcancel", BEFOREUNLOAD:"beforeunload", CONSOLEMESSAGE:"consolemessage", CONTEXTMENU:"contextmenu", DEVICECHANGE:"devicechange", DEVICEMOTION:"devicemotion", DEVICEORIENTATION:"deviceorientation", 
DOMCONTENTLOADED:"DOMContentLoaded", ERROR:"error", HELP:"help", LOAD:"load", LOSECAPTURE:"losecapture", ORIENTATIONCHANGE:"orientationchange", READYSTATECHANGE:"readystatechange", RESIZE:"resize", SCROLL:"scroll", UNLOAD:"unload", CANPLAY:"canplay", CANPLAYTHROUGH:"canplaythrough", DURATIONCHANGE:"durationchange", EMPTIED:"emptied", ENDED:"ended", LOADEDDATA:"loadeddata", LOADEDMETADATA:"loadedmetadata", PAUSE:"pause", PLAY:"play", PLAYING:"playing", PROGRESS:"progress", RATECHANGE:"ratechange", 
SEEKED:"seeked", SEEKING:"seeking", STALLED:"stalled", SUSPEND:"suspend", TIMEUPDATE:"timeupdate", VOLUMECHANGE:"volumechange", WAITING:"waiting", SOURCEOPEN:"sourceopen", SOURCEENDED:"sourceended", SOURCECLOSED:"sourceclosed", ABORT:"abort", UPDATE:"update", UPDATESTART:"updatestart", UPDATEEND:"updateend", HASHCHANGE:"hashchange", PAGEHIDE:"pagehide", PAGESHOW:"pageshow", POPSTATE:"popstate", COPY:"copy", PASTE:"paste", CUT:"cut", BEFORECOPY:"beforecopy", BEFORECUT:"beforecut", BEFOREPASTE:"beforepaste", 
ONLINE:"online", OFFLINE:"offline", MESSAGE:"message", CONNECT:"connect", INSTALL:"install", ACTIVATE:"activate", FETCH:"fetch", FOREIGNFETCH:"foreignfetch", MESSAGEERROR:"messageerror", STATECHANGE:"statechange", UPDATEFOUND:"updatefound", CONTROLLERCHANGE:"controllerchange", ANIMATIONSTART:goog.events.eventTypeHelpers.getVendorPrefixedName("AnimationStart"), ANIMATIONEND:goog.events.eventTypeHelpers.getVendorPrefixedName("AnimationEnd"), ANIMATIONITERATION:goog.events.eventTypeHelpers.getVendorPrefixedName("AnimationIteration"), 
TRANSITIONEND:goog.events.eventTypeHelpers.getVendorPrefixedName("TransitionEnd"), POINTERDOWN:"pointerdown", POINTERUP:"pointerup", POINTERCANCEL:"pointercancel", POINTERMOVE:"pointermove", POINTEROVER:"pointerover", POINTEROUT:"pointerout", POINTERENTER:"pointerenter", POINTERLEAVE:"pointerleave", GOTPOINTERCAPTURE:"gotpointercapture", LOSTPOINTERCAPTURE:"lostpointercapture", MSGESTURECHANGE:"MSGestureChange", MSGESTUREEND:"MSGestureEnd", MSGESTUREHOLD:"MSGestureHold", MSGESTURESTART:"MSGestureStart", 
MSGESTURETAP:"MSGestureTap", MSGOTPOINTERCAPTURE:"MSGotPointerCapture", MSINERTIASTART:"MSInertiaStart", MSLOSTPOINTERCAPTURE:"MSLostPointerCapture", MSPOINTERCANCEL:"MSPointerCancel", MSPOINTERDOWN:"MSPointerDown", MSPOINTERENTER:"MSPointerEnter", MSPOINTERHOVER:"MSPointerHover", MSPOINTERLEAVE:"MSPointerLeave", MSPOINTERMOVE:"MSPointerMove", MSPOINTEROUT:"MSPointerOut", MSPOINTEROVER:"MSPointerOver", MSPOINTERUP:"MSPointerUp", TEXT:"text", TEXTINPUT:"textInput", COMPOSITIONSTART:"compositionstart", 
COMPOSITIONUPDATE:"compositionupdate", COMPOSITIONEND:"compositionend", BEFOREINPUT:"beforeinput", FULLSCREENCHANGE:"fullscreenchange", WEBKITBEGINFULLSCREEN:"webkitbeginfullscreen", WEBKITENDFULLSCREEN:"webkitendfullscreen", EXIT:"exit", LOADABORT:"loadabort", LOADCOMMIT:"loadcommit", LOADREDIRECT:"loadredirect", LOADSTART:"loadstart", LOADSTOP:"loadstop", RESPONSIVE:"responsive", SIZECHANGED:"sizechanged", UNRESPONSIVE:"unresponsive", VISIBILITYCHANGE:"visibilitychange", STORAGE:"storage", BEFOREPRINT:"beforeprint", 
AFTERPRINT:"afterprint", BEFOREINSTALLPROMPT:"beforeinstallprompt", APPINSTALLED:"appinstalled", CANCEL:"cancel", FINISH:"finish", REMOVE:"remove"};
goog.events.BrowserEvent = function(opt_e, opt_currentTarget) {
  goog.events.Event.call(this, opt_e ? opt_e.type : "");
  this.relatedTarget = this.currentTarget = this.target = null;
  this.button = this.screenY = this.screenX = this.clientY = this.clientX = this.offsetY = this.offsetX = 0;
  this.key = "";
  this.charCode = this.keyCode = 0;
  this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1;
  this.state = null;
  this.platformModifierKey = !1;
  this.pointerId = 0;
  this.pointerType = "";
  this.timeStamp = 0;
  this.event_ = null;
  opt_e && this.init(opt_e, opt_currentTarget);
};
goog.inherits(goog.events.BrowserEvent, goog.events.Event);
goog.events.BrowserEvent.USE_LAYER_XY_AS_OFFSET_XY = !1;
goog.events.BrowserEvent.MouseButton = {LEFT:0, MIDDLE:1, RIGHT:2, BACK:3, FORWARD:4};
goog.events.BrowserEvent.PointerType = {MOUSE:"mouse", PEN:"pen", TOUCH:"touch"};
goog.events.BrowserEvent.IEButtonMap = goog.debug.freeze([1, 4, 2]);
goog.events.BrowserEvent.IE_BUTTON_MAP = goog.events.BrowserEvent.IEButtonMap;
goog.events.BrowserEvent.IE_POINTER_TYPE_MAP = goog.debug.freeze({2:goog.events.BrowserEvent.PointerType.TOUCH, 3:goog.events.BrowserEvent.PointerType.PEN, 4:goog.events.BrowserEvent.PointerType.MOUSE});
goog.events.BrowserEvent.prototype.init = function(e, opt_currentTarget) {
  var type = this.type = e.type, relevantTouch = e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : null;
  this.target = e.target || e.srcElement;
  this.currentTarget = opt_currentTarget;
  var relatedTarget = e.relatedTarget;
  relatedTarget ? goog.userAgent.GECKO && (goog.reflect.canAccessProperty(relatedTarget, "nodeName") || (relatedTarget = null)) : type == goog.events.EventType.MOUSEOVER ? relatedTarget = e.fromElement : type == goog.events.EventType.MOUSEOUT && (relatedTarget = e.toElement);
  this.relatedTarget = relatedTarget;
  relevantTouch ? (this.clientX = void 0 !== relevantTouch.clientX ? relevantTouch.clientX : relevantTouch.pageX, this.clientY = void 0 !== relevantTouch.clientY ? relevantTouch.clientY : relevantTouch.pageY, this.screenX = relevantTouch.screenX || 0, this.screenY = relevantTouch.screenY || 0) : (goog.events.BrowserEvent.USE_LAYER_XY_AS_OFFSET_XY ? (this.offsetX = void 0 !== e.layerX ? e.layerX : e.offsetX, this.offsetY = void 0 !== e.layerY ? e.layerY : e.offsetY) : (this.offsetX = goog.userAgent.WEBKIT || 
  void 0 !== e.offsetX ? e.offsetX : e.layerX, this.offsetY = goog.userAgent.WEBKIT || void 0 !== e.offsetY ? e.offsetY : e.layerY), this.clientX = void 0 !== e.clientX ? e.clientX : e.pageX, this.clientY = void 0 !== e.clientY ? e.clientY : e.pageY, this.screenX = e.screenX || 0, this.screenY = e.screenY || 0);
  this.button = e.button;
  this.keyCode = e.keyCode || 0;
  this.key = e.key || "";
  this.charCode = e.charCode || ("keypress" == type ? e.keyCode : 0);
  this.ctrlKey = e.ctrlKey;
  this.altKey = e.altKey;
  this.shiftKey = e.shiftKey;
  this.metaKey = e.metaKey;
  this.platformModifierKey = goog.userAgent.MAC ? e.metaKey : e.ctrlKey;
  this.pointerId = e.pointerId || 0;
  this.pointerType = goog.events.BrowserEvent.getPointerType_(e);
  this.state = e.state;
  this.timeStamp = e.timeStamp;
  this.event_ = e;
  e.defaultPrevented && goog.events.BrowserEvent.superClass_.preventDefault.call(this);
};
goog.events.BrowserEvent.prototype.isButton = function(button) {
  return this.event_.button == button;
};
goog.events.BrowserEvent.prototype.isMouseActionButton = function() {
  return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT) && !(goog.userAgent.MAC && this.ctrlKey);
};
goog.events.BrowserEvent.prototype.stopPropagation = function() {
  goog.events.BrowserEvent.superClass_.stopPropagation.call(this);
  this.event_.stopPropagation ? this.event_.stopPropagation() : this.event_.cancelBubble = !0;
};
goog.events.BrowserEvent.prototype.preventDefault = function() {
  goog.events.BrowserEvent.superClass_.preventDefault.call(this);
  var be = this.event_;
  be.preventDefault ? be.preventDefault() : be.returnValue = !1;
};
goog.events.BrowserEvent.prototype.getBrowserEvent = function() {
  return this.event_;
};
goog.events.BrowserEvent.getPointerType_ = function(e) {
  return "string" === typeof e.pointerType ? e.pointerType : goog.events.BrowserEvent.IE_POINTER_TYPE_MAP[e.pointerType] || "";
};
goog.events.Listenable = function() {
};
goog.events.Listenable.IMPLEMENTED_BY_PROP = "closure_listenable_" + (1E6 * Math.random() | 0);
goog.events.Listenable.addImplementation = function(cls) {
  cls.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP] = !0;
};
goog.events.Listenable.isImplementedBy = function(obj) {
  return !(!obj || !obj[goog.events.Listenable.IMPLEMENTED_BY_PROP]);
};
goog.events.Listenable.prototype.listen = function(type, listener, opt_useCapture, opt_listenerScope) {
};
goog.events.Listenable.prototype.listenOnce = function(type, listener, opt_useCapture, opt_listenerScope) {
};
goog.events.Listenable.prototype.unlisten = function(type, listener, opt_useCapture, opt_listenerScope) {
};
goog.events.Listenable.prototype.unlistenByKey = function(key) {
};
goog.events.Listenable.prototype.dispatchEvent = function(e) {
};
goog.events.Listenable.prototype.removeAllListeners = function(opt_type) {
};
goog.events.Listenable.prototype.getParentEventTarget = function() {
};
goog.events.Listenable.prototype.fireListeners = function(type, capture, eventObject) {
};
goog.events.Listenable.prototype.getListeners = function(type, capture) {
};
goog.events.Listenable.prototype.getListener = function(type, listener, capture, opt_listenerScope) {
};
goog.events.Listenable.prototype.hasListener = function(opt_type, opt_capture) {
};
goog.events.ListenableKey = function() {
};
goog.events.ListenableKey.counter_ = 0;
goog.events.ListenableKey.reserveKey = function() {
  return ++goog.events.ListenableKey.counter_;
};
goog.events.Listener = function(listener, proxy, src, type, capture, opt_handler) {
  goog.events.Listener.ENABLE_MONITORING && (this.creationStack = Error().stack);
  this.listener = listener;
  this.proxy = proxy;
  this.src = src;
  this.type = type;
  this.capture = !!capture;
  this.handler = opt_handler;
  this.key = goog.events.ListenableKey.reserveKey();
  this.removed = this.callOnce = !1;
};
goog.events.Listener.ENABLE_MONITORING = !1;
goog.events.Listener.prototype.markAsRemoved = function() {
  this.removed = !0;
  this.handler = this.src = this.proxy = this.listener = null;
};
goog.events.ListenerMap = function(src) {
  this.src = src;
  this.listeners = {};
  this.typeCount_ = 0;
};
goog.events.ListenerMap.prototype.getTypeCount = function() {
  return this.typeCount_;
};
goog.events.ListenerMap.prototype.getListenerCount = function() {
  var count = 0, type;
  for (type in this.listeners) {
    count += this.listeners[type].length;
  }
  return count;
};
goog.events.ListenerMap.prototype.add = function(type, listener, callOnce, opt_useCapture, opt_listenerScope) {
  var typeStr = type.toString(), listenerArray = this.listeners[typeStr];
  listenerArray || (listenerArray = this.listeners[typeStr] = [], this.typeCount_++);
  var index = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, opt_useCapture, opt_listenerScope);
  if (-1 < index) {
    var listenerObj = listenerArray[index];
    callOnce || (listenerObj.callOnce = !1);
  } else {
    listenerObj = new goog.events.Listener(listener, null, this.src, typeStr, !!opt_useCapture, opt_listenerScope), listenerObj.callOnce = callOnce, listenerArray.push(listenerObj);
  }
  return listenerObj;
};
goog.events.ListenerMap.prototype.remove = function(type, listener, opt_useCapture, opt_listenerScope) {
  var typeStr = type.toString();
  if (!(typeStr in this.listeners)) {
    return !1;
  }
  var listenerArray = this.listeners[typeStr], index = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, opt_useCapture, opt_listenerScope);
  return -1 < index ? (listenerArray[index].markAsRemoved(), module$contents$goog$array_removeAt(listenerArray, index), 0 == listenerArray.length && (delete this.listeners[typeStr], this.typeCount_--), !0) : !1;
};
goog.events.ListenerMap.prototype.removeByKey = function(listener) {
  var type = listener.type;
  if (!(type in this.listeners)) {
    return !1;
  }
  var removed = module$contents$goog$array_remove(this.listeners[type], listener);
  removed && (listener.markAsRemoved(), 0 == this.listeners[type].length && (delete this.listeners[type], this.typeCount_--));
  return removed;
};
goog.events.ListenerMap.prototype.removeAll = function(opt_type) {
  var typeStr = opt_type && opt_type.toString(), count = 0, type;
  for (type in this.listeners) {
    if (!typeStr || type == typeStr) {
      for (var listenerArray = this.listeners[type], i = 0; i < listenerArray.length; i++) {
        ++count, listenerArray[i].markAsRemoved();
      }
      delete this.listeners[type];
      this.typeCount_--;
    }
  }
  return count;
};
goog.events.ListenerMap.prototype.getListeners = function(type, capture) {
  var listenerArray = this.listeners[type.toString()], rv = [];
  if (listenerArray) {
    for (var i = 0; i < listenerArray.length; ++i) {
      var listenerObj = listenerArray[i];
      listenerObj.capture == capture && rv.push(listenerObj);
    }
  }
  return rv;
};
goog.events.ListenerMap.prototype.getListener = function(type, listener, capture, opt_listenerScope) {
  var listenerArray = this.listeners[type.toString()], i = -1;
  listenerArray && (i = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, capture, opt_listenerScope));
  return -1 < i ? listenerArray[i] : null;
};
goog.events.ListenerMap.prototype.hasListener = function(opt_type, opt_capture) {
  var hasType = void 0 !== opt_type, typeStr = hasType ? opt_type.toString() : "", hasCapture = void 0 !== opt_capture;
  return module$contents$goog$object_some(this.listeners, function(listenerArray, type) {
    for (var i = 0; i < listenerArray.length; ++i) {
      if (!(hasType && listenerArray[i].type != typeStr || hasCapture && listenerArray[i].capture != opt_capture)) {
        return !0;
      }
    }
    return !1;
  });
};
goog.events.ListenerMap.findListenerIndex_ = function(listenerArray, listener, opt_useCapture, opt_listenerScope) {
  for (var i = 0; i < listenerArray.length; ++i) {
    var listenerObj = listenerArray[i];
    if (!listenerObj.removed && listenerObj.listener == listener && listenerObj.capture == !!opt_useCapture && listenerObj.handler == opt_listenerScope) {
      return i;
    }
  }
  return -1;
};
goog.events.Key = {};
goog.events.ListenableType = {};
goog.events.LISTENER_MAP_PROP_ = "closure_lm_" + (1E6 * Math.random() | 0);
goog.events.onString_ = "on";
goog.events.onStringMap_ = {};
goog.events.CaptureSimulationMode = {OFF_AND_FAIL:0, OFF_AND_SILENT:1, ON:2};
goog.events.CAPTURE_SIMULATION_MODE = 2;
goog.events.listenerCountEstimate_ = 0;
goog.events.listen = function(src, type, listener, opt_options, opt_handler) {
  if (opt_options && opt_options.once) {
    return goog.events.listenOnce(src, type, listener, opt_options, opt_handler);
  }
  if (Array.isArray(type)) {
    for (var i = 0; i < type.length; i++) {
      goog.events.listen(src, type[i], listener, opt_options, opt_handler);
    }
    return null;
  }
  listener = goog.events.wrapListener(listener);
  return goog.events.Listenable.isImplementedBy(src) ? src.listen(type, listener, goog.isObject(opt_options) ? !!opt_options.capture : !!opt_options, opt_handler) : goog.events.listen_(src, type, listener, !1, opt_options, opt_handler);
};
goog.events.listen_ = function(src, type, listener, callOnce, opt_options, opt_handler) {
  if (!type) {
    throw Error("Invalid event type");
  }
  var capture = goog.isObject(opt_options) ? !!opt_options.capture : !!opt_options, listenerMap = goog.events.getListenerMap_(src);
  listenerMap || (src[goog.events.LISTENER_MAP_PROP_] = listenerMap = new goog.events.ListenerMap(src));
  var listenerObj = listenerMap.add(type, listener, callOnce, capture, opt_handler);
  if (listenerObj.proxy) {
    return listenerObj;
  }
  var proxy = goog.events.getProxy();
  listenerObj.proxy = proxy;
  proxy.src = src;
  proxy.listener = listenerObj;
  if (src.addEventListener) {
    goog.events.BrowserFeature.PASSIVE_EVENTS || (opt_options = capture), void 0 === opt_options && (opt_options = !1), src.addEventListener(type.toString(), proxy, opt_options);
  } else if (src.attachEvent) {
    src.attachEvent(goog.events.getOnString_(type.toString()), proxy);
  } else if (src.addListener && src.removeListener) {
    goog.asserts.assert("change" === type, "MediaQueryList only has a change event"), src.addListener(proxy);
  } else {
    throw Error("addEventListener and attachEvent are unavailable.");
  }
  goog.events.listenerCountEstimate_++;
  return listenerObj;
};
goog.events.getProxy = function() {
  var proxyCallbackFunction = goog.events.handleBrowserEvent_, f = function(eventObject) {
    return proxyCallbackFunction.call(f.src, f.listener, eventObject);
  };
  return f;
};
goog.events.listenOnce = function(src, type, listener, opt_options, opt_handler) {
  if (Array.isArray(type)) {
    for (var i = 0; i < type.length; i++) {
      goog.events.listenOnce(src, type[i], listener, opt_options, opt_handler);
    }
    return null;
  }
  listener = goog.events.wrapListener(listener);
  return goog.events.Listenable.isImplementedBy(src) ? src.listenOnce(type, listener, goog.isObject(opt_options) ? !!opt_options.capture : !!opt_options, opt_handler) : goog.events.listen_(src, type, listener, !0, opt_options, opt_handler);
};
goog.events.listenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) {
  wrapper.listen(src, listener, opt_capt, opt_handler);
};
goog.events.unlisten = function(src, type, listener, opt_options, opt_handler) {
  if (Array.isArray(type)) {
    for (var i = 0; i < type.length; i++) {
      goog.events.unlisten(src, type[i], listener, opt_options, opt_handler);
    }
    return null;
  }
  var capture = goog.isObject(opt_options) ? !!opt_options.capture : !!opt_options;
  listener = goog.events.wrapListener(listener);
  if (goog.events.Listenable.isImplementedBy(src)) {
    return src.unlisten(type, listener, capture, opt_handler);
  }
  if (!src) {
    return !1;
  }
  var listenerMap = goog.events.getListenerMap_(src);
  if (listenerMap) {
    var listenerObj = listenerMap.getListener(type, listener, capture, opt_handler);
    if (listenerObj) {
      return goog.events.unlistenByKey(listenerObj);
    }
  }
  return !1;
};
goog.events.unlistenByKey = function(key) {
  if ("number" === typeof key || !key || key.removed) {
    return !1;
  }
  var src = key.src;
  if (goog.events.Listenable.isImplementedBy(src)) {
    return src.unlistenByKey(key);
  }
  var type = key.type, proxy = key.proxy;
  src.removeEventListener ? src.removeEventListener(type, proxy, key.capture) : src.detachEvent ? src.detachEvent(goog.events.getOnString_(type), proxy) : src.addListener && src.removeListener && src.removeListener(proxy);
  goog.events.listenerCountEstimate_--;
  var listenerMap = goog.events.getListenerMap_(src);
  listenerMap ? (listenerMap.removeByKey(key), 0 == listenerMap.getTypeCount() && (listenerMap.src = null, src[goog.events.LISTENER_MAP_PROP_] = null)) : key.markAsRemoved();
  return !0;
};
goog.events.unlistenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) {
  wrapper.unlisten(src, listener, opt_capt, opt_handler);
};
goog.events.removeAll = function(obj, opt_type) {
  if (!obj) {
    return 0;
  }
  if (goog.events.Listenable.isImplementedBy(obj)) {
    return obj.removeAllListeners(opt_type);
  }
  var listenerMap = goog.events.getListenerMap_(obj);
  if (!listenerMap) {
    return 0;
  }
  var count = 0, typeStr = opt_type && opt_type.toString(), type;
  for (type in listenerMap.listeners) {
    if (!typeStr || type == typeStr) {
      for (var listeners = listenerMap.listeners[type].concat(), i = 0; i < listeners.length; ++i) {
        goog.events.unlistenByKey(listeners[i]) && ++count;
      }
    }
  }
  return count;
};
goog.events.getListeners = function(obj, type, capture) {
  if (goog.events.Listenable.isImplementedBy(obj)) {
    return obj.getListeners(type, capture);
  }
  if (!obj) {
    return [];
  }
  var listenerMap = goog.events.getListenerMap_(obj);
  return listenerMap ? listenerMap.getListeners(type, capture) : [];
};
goog.events.getListener = function(src, type, listener, opt_capt, opt_handler) {
  listener = goog.events.wrapListener(listener);
  var capture = !!opt_capt;
  if (goog.events.Listenable.isImplementedBy(src)) {
    return src.getListener(type, listener, capture, opt_handler);
  }
  if (!src) {
    return null;
  }
  var listenerMap = goog.events.getListenerMap_(src);
  return listenerMap ? listenerMap.getListener(type, listener, capture, opt_handler) : null;
};
goog.events.hasListener = function(obj, opt_type, opt_capture) {
  if (goog.events.Listenable.isImplementedBy(obj)) {
    return obj.hasListener(opt_type, opt_capture);
  }
  var listenerMap = goog.events.getListenerMap_(obj);
  return !!listenerMap && listenerMap.hasListener(opt_type, opt_capture);
};
goog.events.expose = function(e) {
  var str = [], key;
  for (key in e) {
    e[key] && e[key].id ? str.push(key + " = " + e[key] + " (" + e[key].id + ")") : str.push(key + " = " + e[key]);
  }
  return str.join("\n");
};
goog.events.getOnString_ = function(type) {
  return type in goog.events.onStringMap_ ? goog.events.onStringMap_[type] : goog.events.onStringMap_[type] = goog.events.onString_ + type;
};
goog.events.fireListeners = function(obj, type, capture, eventObject) {
  return goog.events.Listenable.isImplementedBy(obj) ? obj.fireListeners(type, capture, eventObject) : goog.events.fireListeners_(obj, type, capture, eventObject);
};
goog.events.fireListeners_ = function(obj, type, capture, eventObject) {
  var retval = !0, listenerMap = goog.events.getListenerMap_(obj);
  if (listenerMap) {
    var listenerArray = listenerMap.listeners[type.toString()];
    if (listenerArray) {
      listenerArray = listenerArray.concat();
      for (var i = 0; i < listenerArray.length; i++) {
        var listener = listenerArray[i];
        if (listener && listener.capture == capture && !listener.removed) {
          var result = goog.events.fireListener(listener, eventObject);
          retval = retval && !1 !== result;
        }
      }
    }
  }
  return retval;
};
goog.events.fireListener = function(listener, eventObject) {
  var listenerFn = listener.listener, listenerHandler = listener.handler || listener.src;
  listener.callOnce && goog.events.unlistenByKey(listener);
  return listenerFn.call(listenerHandler, eventObject);
};
goog.events.getTotalListenerCount = function() {
  return goog.events.listenerCountEstimate_;
};
goog.events.dispatchEvent = function(src, e) {
  goog.asserts.assert(goog.events.Listenable.isImplementedBy(src), "Can not use goog.events.dispatchEvent with non-goog.events.Listenable instance.");
  return src.dispatchEvent(e);
};
goog.events.protectBrowserEventEntryPoint = function(errorHandler) {
  goog.events.handleBrowserEvent_ = errorHandler.protectEntryPoint(goog.events.handleBrowserEvent_);
};
goog.events.handleBrowserEvent_ = function(listener, opt_evt) {
  return listener.removed ? !0 : goog.events.fireListener(listener, new goog.events.BrowserEvent(opt_evt, this));
};
goog.events.markIeEvent_ = function(e) {
  var useReturnValue = !1;
  if (0 == e.keyCode) {
    try {
      e.keyCode = -1;
      return;
    } catch (ex) {
      useReturnValue = !0;
    }
  }
  if (useReturnValue || void 0 == e.returnValue) {
    e.returnValue = !0;
  }
};
goog.events.isMarkedIeEvent_ = function(e) {
  return 0 > e.keyCode || void 0 != e.returnValue;
};
goog.events.uniqueIdCounter_ = 0;
goog.events.getUniqueId = function(identifier) {
  return identifier + "_" + goog.events.uniqueIdCounter_++;
};
goog.events.getListenerMap_ = function(src) {
  var listenerMap = src[goog.events.LISTENER_MAP_PROP_];
  return listenerMap instanceof goog.events.ListenerMap ? listenerMap : null;
};
goog.events.LISTENER_WRAPPER_PROP_ = "__closure_events_fn_" + (1E9 * Math.random() >>> 0);
goog.events.wrapListener = function(listener) {
  goog.asserts.assert(listener, "Listener can not be null.");
  if ("function" === typeof listener) {
    return listener;
  }
  goog.asserts.assert(listener.handleEvent, "An object listener must have handleEvent method.");
  listener[goog.events.LISTENER_WRAPPER_PROP_] || (listener[goog.events.LISTENER_WRAPPER_PROP_] = function(e) {
    return listener.handleEvent(e);
  });
  return listener[goog.events.LISTENER_WRAPPER_PROP_];
};
goog.debug.entryPointRegistry.register(function(transformer) {
  goog.events.handleBrowserEvent_ = transformer(goog.events.handleBrowserEvent_);
});
goog.events.EventTarget = function() {
  goog.Disposable.call(this);
  this.eventTargetListeners_ = new goog.events.ListenerMap(this);
  this.actualEventTarget_ = this;
  this.parentEventTarget_ = null;
};
goog.inherits(goog.events.EventTarget, goog.Disposable);
goog.events.Listenable.addImplementation(goog.events.EventTarget);
goog.events.EventTarget.MAX_ANCESTORS_ = 1E3;
goog.events.EventTarget.prototype.getParentEventTarget = function() {
  return this.parentEventTarget_;
};
goog.events.EventTarget.prototype.setParentEventTarget = function(parent) {
  this.parentEventTarget_ = parent;
};
goog.events.EventTarget.prototype.addEventListener = function(type, handler, opt_capture, opt_handlerScope) {
  goog.events.listen(this, type, handler, opt_capture, opt_handlerScope);
};
goog.events.EventTarget.prototype.removeEventListener = function(type, handler, opt_capture, opt_handlerScope) {
  goog.events.unlisten(this, type, handler, opt_capture, opt_handlerScope);
};
goog.events.EventTarget.prototype.dispatchEvent = function(e) {
  this.assertInitialized_();
  var ancestor = this.getParentEventTarget();
  if (ancestor) {
    var ancestorsTree = [];
    for (var ancestorCount = 1; ancestor; ancestor = ancestor.getParentEventTarget()) {
      ancestorsTree.push(ancestor), goog.asserts.assert(++ancestorCount < goog.events.EventTarget.MAX_ANCESTORS_, "infinite loop");
    }
  }
  return goog.events.EventTarget.dispatchEventInternal_(this.actualEventTarget_, e, ancestorsTree);
};
goog.events.EventTarget.prototype.disposeInternal = function() {
  goog.events.EventTarget.superClass_.disposeInternal.call(this);
  this.removeAllListeners();
  this.parentEventTarget_ = null;
};
goog.events.EventTarget.prototype.listen = function(type, listener, opt_useCapture, opt_listenerScope) {
  this.assertInitialized_();
  return this.eventTargetListeners_.add(String(type), listener, !1, opt_useCapture, opt_listenerScope);
};
goog.events.EventTarget.prototype.listenOnce = function(type, listener, opt_useCapture, opt_listenerScope) {
  return this.eventTargetListeners_.add(String(type), listener, !0, opt_useCapture, opt_listenerScope);
};
goog.events.EventTarget.prototype.unlisten = function(type, listener, opt_useCapture, opt_listenerScope) {
  return this.eventTargetListeners_.remove(String(type), listener, opt_useCapture, opt_listenerScope);
};
goog.events.EventTarget.prototype.unlistenByKey = function(key) {
  return this.eventTargetListeners_.removeByKey(key);
};
goog.events.EventTarget.prototype.removeAllListeners = function(opt_type) {
  return this.eventTargetListeners_ ? this.eventTargetListeners_.removeAll(opt_type) : 0;
};
goog.events.EventTarget.prototype.fireListeners = function(type, capture, eventObject) {
  var listenerArray = this.eventTargetListeners_.listeners[String(type)];
  if (!listenerArray) {
    return !0;
  }
  listenerArray = listenerArray.concat();
  for (var rv = !0, i = 0; i < listenerArray.length; ++i) {
    var listener = listenerArray[i];
    if (listener && !listener.removed && listener.capture == capture) {
      var listenerFn = listener.listener, listenerHandler = listener.handler || listener.src;
      listener.callOnce && this.unlistenByKey(listener);
      rv = !1 !== listenerFn.call(listenerHandler, eventObject) && rv;
    }
  }
  return rv && !eventObject.defaultPrevented;
};
goog.events.EventTarget.prototype.getListeners = function(type, capture) {
  return this.eventTargetListeners_.getListeners(String(type), capture);
};
goog.events.EventTarget.prototype.getListener = function(type, listener, capture, opt_listenerScope) {
  return this.eventTargetListeners_.getListener(String(type), listener, capture, opt_listenerScope);
};
goog.events.EventTarget.prototype.hasListener = function(opt_type, opt_capture) {
  return this.eventTargetListeners_.hasListener(void 0 !== opt_type ? String(opt_type) : void 0, opt_capture);
};
goog.events.EventTarget.prototype.setTargetForTesting = function(target) {
  this.actualEventTarget_ = target;
};
goog.events.EventTarget.prototype.assertInitialized_ = function() {
  goog.asserts.assert(this.eventTargetListeners_, "Event target is not initialized. Did you call the superclass (goog.events.EventTarget) constructor?");
};
goog.events.EventTarget.dispatchEventInternal_ = function(target, e, opt_ancestorsTree) {
  var type = e.type || e;
  if ("string" === typeof e) {
    e = new goog.events.Event(e, target);
  } else if (e instanceof goog.events.Event) {
    e.target = e.target || target;
  } else {
    var oldEvent = e;
    e = new goog.events.Event(type, target);
    module$contents$goog$object_extend(e, oldEvent);
  }
  var rv = !0;
  if (opt_ancestorsTree) {
    for (var i = opt_ancestorsTree.length - 1; !e.hasPropagationStopped() && 0 <= i; i--) {
      var currentTarget = e.currentTarget = opt_ancestorsTree[i];
      rv = currentTarget.fireListeners(type, !0, e) && rv;
    }
  }
  e.hasPropagationStopped() || (currentTarget = e.currentTarget = target, rv = currentTarget.fireListeners(type, !0, e) && rv, e.hasPropagationStopped() || (rv = currentTarget.fireListeners(type, !1, e) && rv));
  if (opt_ancestorsTree) {
    for (i = 0; !e.hasPropagationStopped() && i < opt_ancestorsTree.length; i++) {
      currentTarget = e.currentTarget = opt_ancestorsTree[i], rv = currentTarget.fireListeners(type, !1, e) && rv;
    }
  }
  return rv;
};
goog.structs.Collection = function() {
};
goog.collections.iters = {};
function module$contents$goog$collections$iters_getIterator(iterable) {
  return iterable[goog.global.Symbol.iterator]();
}
goog.collections.iters.getIterator = module$contents$goog$collections$iters_getIterator;
function module$contents$goog$collections$iters_forEach(iterator, f) {
  for (var result; !(result = iterator.next()).done;) {
    f(result.value);
  }
}
goog.collections.iters.forEach = module$contents$goog$collections$iters_forEach;
var module$contents$goog$collections$iters_MapIterator = function(childIter, mapFn) {
  this.childIterator_ = module$contents$goog$collections$iters_getIterator(childIter);
  this.mapFn_ = mapFn;
};
module$contents$goog$collections$iters_MapIterator.prototype[Symbol.iterator] = function() {
  return this;
};
module$contents$goog$collections$iters_MapIterator.prototype.next = function() {
  var childResult = this.childIterator_.next();
  return {value:childResult.done ? void 0 : this.mapFn_.call(void 0, childResult.value), done:childResult.done};
};
goog.collections.iters.map = function(iterable, f) {
  return new module$contents$goog$collections$iters_MapIterator(iterable, f);
};
var module$contents$goog$collections$iters_FilterIterator = function(childIter, filterFn) {
  this.childIter_ = module$contents$goog$collections$iters_getIterator(childIter);
  this.filterFn_ = filterFn;
};
module$contents$goog$collections$iters_FilterIterator.prototype[Symbol.iterator] = function() {
  return this;
};
module$contents$goog$collections$iters_FilterIterator.prototype.next = function() {
  for (;;) {
    var childResult = this.childIter_.next();
    if (childResult.done) {
      return {done:!0, value:void 0};
    }
    if (this.filterFn_.call(void 0, childResult.value)) {
      return childResult;
    }
  }
};
goog.collections.iters.filter = function(iterable, f) {
  return new module$contents$goog$collections$iters_FilterIterator(iterable, f);
};
var module$contents$goog$collections$iters_ConcatIterator = function(iterators) {
  this.iterators_ = iterators;
  this.iterIndex_ = 0;
};
module$contents$goog$collections$iters_ConcatIterator.prototype[Symbol.iterator] = function() {
  return this;
};
module$contents$goog$collections$iters_ConcatIterator.prototype.next = function() {
  for (; this.iterIndex_ < this.iterators_.length;) {
    var result = this.iterators_[this.iterIndex_].next();
    if (!result.done) {
      return result;
    }
    this.iterIndex_++;
  }
  return {done:!0};
};
goog.collections.iters.concat = function() {
  return new module$contents$goog$collections$iters_ConcatIterator($jscomp.getRestArguments.apply(0, arguments).map(module$contents$goog$collections$iters_getIterator));
};
goog.collections.iters.toArray = function(iterator) {
  var arr = [];
  module$contents$goog$collections$iters_forEach(iterator, function(e) {
    return arr.push(e);
  });
  return arr;
};
goog.functions = {};
goog.functions.constant = function(retValue) {
  return function() {
    return retValue;
  };
};
goog.functions.FALSE = function() {
  return !1;
};
goog.functions.TRUE = function() {
  return !0;
};
goog.functions.NULL = function() {
  return null;
};
goog.functions.UNDEFINED = function() {
};
goog.functions.EMPTY = goog.functions.UNDEFINED;
goog.functions.identity = function(opt_returnValue, var_args) {
  return opt_returnValue;
};
goog.functions.error = function(message) {
  return function() {
    throw Error(message);
  };
};
goog.functions.fail = function(err) {
  return function() {
    throw err;
  };
};
goog.functions.lock = function(f, opt_numArgs) {
  opt_numArgs = opt_numArgs || 0;
  return function() {
    return f.apply(this, Array.prototype.slice.call(arguments, 0, opt_numArgs));
  };
};
goog.functions.nth = function(n) {
  return function() {
    return arguments[n];
  };
};
goog.functions.partialRight = function(fn, var_args) {
  var rightArgs = Array.prototype.slice.call(arguments, 1);
  return function() {
    var self = this;
    self === goog.global && (self = void 0);
    var newArgs = Array.prototype.slice.call(arguments);
    newArgs.push.apply(newArgs, rightArgs);
    return fn.apply(self, newArgs);
  };
};
goog.functions.withReturnValue = function(f, retValue) {
  return goog.functions.sequence(f, goog.functions.constant(retValue));
};
goog.functions.equalTo = function(value, opt_useLooseComparison) {
  return function(other) {
    return opt_useLooseComparison ? value == other : value === other;
  };
};
goog.functions.compose = function(fn, var_args) {
  var functions = arguments, length = functions.length;
  return function() {
    var result;
    length && (result = functions[length - 1].apply(this, arguments));
    for (var i = length - 2; 0 <= i; i--) {
      result = functions[i].call(this, result);
    }
    return result;
  };
};
goog.functions.sequence = function(var_args) {
  var functions = arguments, length = functions.length;
  return function() {
    for (var result, i = 0; i < length; i++) {
      result = functions[i].apply(this, arguments);
    }
    return result;
  };
};
goog.functions.and = function(var_args) {
  var functions = arguments, length = functions.length;
  return function() {
    for (var i = 0; i < length; i++) {
      if (!functions[i].apply(this, arguments)) {
        return !1;
      }
    }
    return !0;
  };
};
goog.functions.or = function(var_args) {
  var functions = arguments, length = functions.length;
  return function() {
    for (var i = 0; i < length; i++) {
      if (functions[i].apply(this, arguments)) {
        return !0;
      }
    }
    return !1;
  };
};
goog.functions.not = function(f) {
  return function() {
    return !f.apply(this, arguments);
  };
};
goog.functions.create = function(constructor, var_args) {
  var temp = function() {
  };
  temp.prototype = constructor.prototype;
  var obj = new temp();
  constructor.apply(obj, Array.prototype.slice.call(arguments, 1));
  return obj;
};
goog.functions.CACHE_RETURN_VALUE = !0;
goog.functions.cacheReturnValue = function(fn) {
  var called = !1, value;
  return function() {
    if (!goog.functions.CACHE_RETURN_VALUE) {
      return fn();
    }
    called || (value = fn(), called = !0);
    return value;
  };
};
goog.functions.once = function(f) {
  var inner = f;
  return function() {
    if (inner) {
      var tmp = inner;
      inner = null;
      tmp();
    }
  };
};
goog.functions.debounce = function(f, interval, opt_scope) {
  var timeout = 0;
  return function(var_args) {
    goog.global.clearTimeout(timeout);
    var args = arguments;
    timeout = goog.global.setTimeout(function() {
      f.apply(opt_scope, args);
    }, interval);
  };
};
goog.functions.throttle = function(f, interval, opt_scope) {
  var timeout = 0, shouldFire = !1, storedArgs = [], handleTimeout = function() {
    timeout = 0;
    shouldFire && (shouldFire = !1, fire());
  }, fire = function() {
    timeout = goog.global.setTimeout(handleTimeout, interval);
    var args = storedArgs;
    storedArgs = [];
    f.apply(opt_scope, args);
  };
  return function(var_args) {
    storedArgs = arguments;
    timeout ? shouldFire = !0 : fire();
  };
};
goog.functions.rateLimit = function(f, interval, opt_scope) {
  var timeout = 0, handleTimeout = function() {
    timeout = 0;
  };
  return function(var_args) {
    timeout || (timeout = goog.global.setTimeout(handleTimeout, interval), f.apply(opt_scope, arguments));
  };
};
goog.functions.isFunction = function(val) {
  return "function" === typeof val;
};
goog.math = {};
goog.math.randomInt = function(a) {
  return Math.floor(Math.random() * a);
};
goog.math.uniformRandom = function(a, b) {
  return a + Math.random() * (b - a);
};
goog.math.clamp = function(value, min, max) {
  return Math.min(Math.max(value, min), max);
};
goog.math.modulo = function(a, b) {
  var r = a % b;
  return 0 > r * b ? r + b : r;
};
goog.math.lerp = function(a, b, x) {
  return a + x * (b - a);
};
goog.math.nearlyEquals = function(a, b, opt_tolerance) {
  return Math.abs(a - b) <= (opt_tolerance || 1E-6);
};
goog.math.standardAngle = function(angle) {
  return goog.math.modulo(angle, 360);
};
goog.math.standardAngleInRadians = function(angle) {
  return goog.math.modulo(angle, 2 * Math.PI);
};
goog.math.toRadians = function(angleDegrees) {
  return angleDegrees * Math.PI / 180;
};
goog.math.toDegrees = function(angleRadians) {
  return 180 * angleRadians / Math.PI;
};
goog.math.angleDx = function(degrees, radius) {
  return radius * Math.cos(goog.math.toRadians(degrees));
};
goog.math.angleDy = function(degrees, radius) {
  return radius * Math.sin(goog.math.toRadians(degrees));
};
goog.math.angle = function(x1, y1, x2, y2) {
  return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(y2 - y1, x2 - x1)));
};
goog.math.angleDifference = function(startAngle, endAngle) {
  var d = goog.math.standardAngle(endAngle) - goog.math.standardAngle(startAngle);
  180 < d ? d -= 360 : -180 >= d && (d = 360 + d);
  return d;
};
goog.math.sign = function(x) {
  return 0 < x ? 1 : 0 > x ? -1 : x;
};
goog.math.longestCommonSubsequence = function(array1, array2, opt_compareFn, opt_collectorFn) {
  for (var compare = opt_compareFn || function(a, b) {
    return a == b;
  }, collect = opt_collectorFn || function(i1, i2) {
    return array1[i1];
  }, length1 = array1.length, length2 = array2.length, arr = [], i = 0; i < length1 + 1; i++) {
    arr[i] = [], arr[i][0] = 0;
  }
  for (var j = 0; j < length2 + 1; j++) {
    arr[0][j] = 0;
  }
  for (i = 1; i <= length1; i++) {
    for (j = 1; j <= length2; j++) {
      compare(array1[i - 1], array2[j - 1]) ? arr[i][j] = arr[i - 1][j - 1] + 1 : arr[i][j] = Math.max(arr[i - 1][j], arr[i][j - 1]);
    }
  }
  var result = [];
  i = length1;
  for (j = length2; 0 < i && 0 < j;) {
    compare(array1[i - 1], array2[j - 1]) ? (result.unshift(collect(i - 1, j - 1)), i--, j--) : arr[i - 1][j] > arr[i][j - 1] ? i-- : j--;
  }
  return result;
};
goog.math.sum = function(var_args) {
  return Array.prototype.reduce.call(arguments, function(sum, value) {
    return sum + value;
  }, 0);
};
goog.math.average = function(var_args) {
  return goog.math.sum.apply(null, arguments) / arguments.length;
};
goog.math.sampleVariance = function(var_args) {
  var sampleSize = arguments.length;
  if (2 > sampleSize) {
    return 0;
  }
  var mean = goog.math.average.apply(null, arguments);
  return goog.math.sum.apply(null, Array.prototype.map.call(arguments, function(val) {
    return Math.pow(val - mean, 2);
  })) / (sampleSize - 1);
};
goog.math.standardDeviation = function(var_args) {
  return Math.sqrt(goog.math.sampleVariance.apply(null, arguments));
};
goog.math.isInt = function(num) {
  return isFinite(num) && 0 == num % 1;
};
goog.math.isFiniteNumber = function(num) {
  return isFinite(num);
};
goog.math.isNegativeZero = function(num) {
  return 0 == num && 0 > 1 / num;
};
goog.math.log10Floor = function(num) {
  if (0 < num) {
    var x = Math.round(Math.log(num) * Math.LOG10E);
    return x - (parseFloat("1e" + x) > num ? 1 : 0);
  }
  return 0 == num ? -Infinity : NaN;
};
goog.math.safeFloor = function(num, opt_epsilon) {
  goog.asserts.assert(void 0 === opt_epsilon || 0 < opt_epsilon);
  return Math.floor(num + (opt_epsilon || 2E-15));
};
goog.math.safeCeil = function(num, opt_epsilon) {
  goog.asserts.assert(void 0 === opt_epsilon || 0 < opt_epsilon);
  return Math.ceil(num - (opt_epsilon || 2E-15));
};
goog.iter = {};
goog.iter.Iterable = {};
goog.iter.Iterator = function() {
};
goog.iter.Iterator.prototype.next = function() {
  return goog.iter.ES6_ITERATOR_DONE;
};
goog.iter.ES6_ITERATOR_DONE = goog.debug.freeze({done:!0, value:void 0});
goog.iter.createEs6IteratorYield = function(value) {
  return {value:value, done:!1};
};
goog.iter.Iterator.prototype.__iterator__ = function(opt_keys) {
  return this;
};
goog.iter.toIterator = function(iterable) {
  if (iterable instanceof goog.iter.Iterator) {
    return iterable;
  }
  if ("function" == typeof iterable.__iterator__) {
    return iterable.__iterator__(!1);
  }
  if (goog.isArrayLike(iterable)) {
    var i = 0, newIter = new goog.iter.Iterator();
    newIter.next = function() {
      for (;;) {
        if (i >= iterable.length) {
          return goog.iter.ES6_ITERATOR_DONE;
        }
        if (i in iterable) {
          return goog.iter.createEs6IteratorYield(iterable[i++]);
        }
        i++;
      }
    };
    return newIter;
  }
  throw Error("Not implemented");
};
goog.iter.forEach = function(iterable, f, opt_obj) {
  if (goog.isArrayLike(iterable)) {
    module$contents$goog$array_forEach(iterable, f, opt_obj);
  } else {
    for (var iterator = goog.iter.toIterator(iterable);;) {
      var $jscomp$destructuring$var18 = iterator.next();
      if ($jscomp$destructuring$var18.done) {
        break;
      }
      f.call(opt_obj, $jscomp$destructuring$var18.value, void 0, iterator);
    }
  }
};
goog.iter.filter = function(iterable, f, opt_obj) {
  var iterator = goog.iter.toIterator(iterable), newIter = new goog.iter.Iterator();
  newIter.next = function() {
    for (;;) {
      var $jscomp$destructuring$var19 = iterator.next(), value = $jscomp$destructuring$var19.value;
      if ($jscomp$destructuring$var19.done) {
        return goog.iter.ES6_ITERATOR_DONE;
      }
      if (f.call(opt_obj, value, void 0, iterator)) {
        return goog.iter.createEs6IteratorYield(value);
      }
    }
  };
  return newIter;
};
goog.iter.filterFalse = function(iterable, f, opt_obj) {
  return goog.iter.filter(iterable, goog.functions.not(f), opt_obj);
};
goog.iter.range = function(startOrStop, opt_stop, opt_step) {
  var start = 0, stop = startOrStop, step = opt_step || 1;
  1 < arguments.length && (start = startOrStop, stop = +opt_stop);
  if (0 == step) {
    throw Error("Range step argument must not be zero");
  }
  var newIter = new goog.iter.Iterator();
  newIter.next = function() {
    if (0 < step && start >= stop || 0 > step && start <= stop) {
      return goog.iter.ES6_ITERATOR_DONE;
    }
    var rv = start;
    start += step;
    return goog.iter.createEs6IteratorYield(rv);
  };
  return newIter;
};
goog.iter.join = function(iterable, deliminator) {
  return goog.iter.toArray(iterable).join(deliminator);
};
goog.iter.map = function(iterable, f, opt_obj) {
  var iterator = goog.iter.toIterator(iterable), newIter = new goog.iter.Iterator();
  newIter.next = function() {
    var $jscomp$destructuring$var20 = iterator.next();
    if ($jscomp$destructuring$var20.done) {
      return goog.iter.ES6_ITERATOR_DONE;
    }
    var mappedVal = f.call(opt_obj, $jscomp$destructuring$var20.value, void 0, iterator);
    return goog.iter.createEs6IteratorYield(mappedVal);
  };
  return newIter;
};
goog.iter.reduce = function(iterable, f, val, opt_obj) {
  var rval = val;
  goog.iter.forEach(iterable, function(val) {
    rval = f.call(opt_obj, rval, val);
  });
  return rval;
};
goog.iter.some = function(iterable, f, opt_obj) {
  for (var iterator = goog.iter.toIterator(iterable);;) {
    var $jscomp$destructuring$var21 = iterator.next();
    if ($jscomp$destructuring$var21.done) {
      return !1;
    }
    if (f.call(opt_obj, $jscomp$destructuring$var21.value, void 0, iterator)) {
      return !0;
    }
  }
};
goog.iter.every = function(iterable, f, opt_obj) {
  for (var iterator = goog.iter.toIterator(iterable);;) {
    var $jscomp$destructuring$var22 = iterator.next();
    if ($jscomp$destructuring$var22.done) {
      return !0;
    }
    if (!f.call(opt_obj, $jscomp$destructuring$var22.value, void 0, iterator)) {
      return !1;
    }
  }
};
goog.iter.chain = function(var_args) {
  return goog.iter.chainFromIterable(arguments);
};
goog.iter.chainFromIterable = function(iterable) {
  var iteratorOfIterators = goog.iter.toIterator(iterable), iter = new goog.iter.Iterator(), current = null;
  iter.next = function() {
    for (;;) {
      if (null == current) {
        var it$jscomp$0 = iteratorOfIterators.next();
        if (it$jscomp$0.done) {
          return goog.iter.ES6_ITERATOR_DONE;
        }
        current = goog.iter.toIterator(it$jscomp$0.value);
      }
      var it = current.next();
      if (it.done) {
        current = null;
      } else {
        return goog.iter.createEs6IteratorYield(it.value);
      }
    }
  };
  return iter;
};
goog.iter.dropWhile = function(iterable, f, opt_obj) {
  var iterator = goog.iter.toIterator(iterable), newIter = new goog.iter.Iterator(), dropping = !0;
  newIter.next = function() {
    for (;;) {
      var $jscomp$destructuring$var23 = iterator.next(), value = $jscomp$destructuring$var23.value;
      if ($jscomp$destructuring$var23.done) {
        return goog.iter.ES6_ITERATOR_DONE;
      }
      if (!dropping || !f.call(opt_obj, value, void 0, iterator)) {
        return dropping = !1, goog.iter.createEs6IteratorYield(value);
      }
    }
  };
  return newIter;
};
goog.iter.takeWhile = function(iterable, f, opt_obj) {
  var iterator = goog.iter.toIterator(iterable), iter = new goog.iter.Iterator();
  iter.next = function() {
    var $jscomp$destructuring$var24 = iterator.next(), value = $jscomp$destructuring$var24.value;
    return $jscomp$destructuring$var24.done ? goog.iter.ES6_ITERATOR_DONE : f.call(opt_obj, value, void 0, iterator) ? goog.iter.createEs6IteratorYield(value) : goog.iter.ES6_ITERATOR_DONE;
  };
  return iter;
};
goog.iter.toArray = function(iterable) {
  if (goog.isArrayLike(iterable)) {
    return module$contents$goog$array_toArray(iterable);
  }
  iterable = goog.iter.toIterator(iterable);
  var array = [];
  goog.iter.forEach(iterable, function(val) {
    array.push(val);
  });
  return array;
};
goog.iter.equals = function(iterable1, iterable2, opt_equalsFn) {
  var pairs = goog.iter.zipLongest({}, iterable1, iterable2), equalsFn = opt_equalsFn || module$contents$goog$array_defaultCompareEquality;
  return goog.iter.every(pairs, function(pair) {
    return equalsFn(pair[0], pair[1]);
  });
};
goog.iter.nextOrValue = function(iterable, defaultValue) {
  var $jscomp$destructuring$var25 = goog.iter.toIterator(iterable).next();
  return $jscomp$destructuring$var25.done ? defaultValue : $jscomp$destructuring$var25.value;
};
goog.iter.product = function(var_args) {
  if (Array.prototype.some.call(arguments, function(arr) {
    return !arr.length;
  }) || !arguments.length) {
    return new goog.iter.Iterator();
  }
  var iter = new goog.iter.Iterator(), arrays = arguments, indices = module$contents$goog$array_repeat(0, arrays.length);
  iter.next = function() {
    if (indices) {
      for (var retVal = module$contents$goog$array_map(indices, function(valueIndex, arrayIndex) {
        return arrays[arrayIndex][valueIndex];
      }), i = indices.length - 1; 0 <= i; i--) {
        goog.asserts.assert(indices);
        if (indices[i] < arrays[i].length - 1) {
          indices[i]++;
          break;
        }
        if (0 == i) {
          indices = null;
          break;
        }
        indices[i] = 0;
      }
      return goog.iter.createEs6IteratorYield(retVal);
    }
    return goog.iter.ES6_ITERATOR_DONE;
  };
  return iter;
};
goog.iter.cycle = function(iterable) {
  var baseIterator = goog.iter.toIterator(iterable), cache = [], cacheIndex = 0, iter = new goog.iter.Iterator(), useCache = !1;
  iter.next = function() {
    var returnElement = null;
    if (!useCache) {
      var it = baseIterator.next();
      if (it.done) {
        if (module$contents$goog$array_isEmpty(cache)) {
          return goog.iter.ES6_ITERATOR_DONE;
        }
        useCache = !0;
      } else {
        return cache.push(it.value), it;
      }
    }
    returnElement = cache[cacheIndex];
    cacheIndex = (cacheIndex + 1) % cache.length;
    return goog.iter.createEs6IteratorYield(returnElement);
  };
  return iter;
};
goog.iter.count = function(opt_start, opt_step) {
  var counter = opt_start || 0, step = void 0 !== opt_step ? opt_step : 1, iter = new goog.iter.Iterator();
  iter.next = function() {
    var returnValue = counter;
    counter += step;
    return goog.iter.createEs6IteratorYield(returnValue);
  };
  return iter;
};
goog.iter.repeat = function(value) {
  var iter = new goog.iter.Iterator();
  iter.next = function() {
    return goog.iter.createEs6IteratorYield(value);
  };
  return iter;
};
goog.iter.accumulate = function(iterable) {
  var iterator = goog.iter.toIterator(iterable), total = 0, iter = new goog.iter.Iterator();
  iter.next = function() {
    var $jscomp$destructuring$var26 = iterator.next();
    if ($jscomp$destructuring$var26.done) {
      return goog.iter.ES6_ITERATOR_DONE;
    }
    total += $jscomp$destructuring$var26.value;
    return goog.iter.createEs6IteratorYield(total);
  };
  return iter;
};
goog.iter.zip = function(var_args) {
  var args = arguments, iter = new goog.iter.Iterator();
  if (0 < args.length) {
    var iterators = module$contents$goog$array_map(args, goog.iter.toIterator), allDone = !1;
    iter.next = function() {
      if (allDone) {
        return goog.iter.ES6_ITERATOR_DONE;
      }
      for (var arr = [], i = 0, iterator = void 0; iterator = iterators[i++];) {
        var it = iterator.next();
        if (it.done) {
          return allDone = !0, goog.iter.ES6_ITERATOR_DONE;
        }
        arr.push(it.value);
      }
      return goog.iter.createEs6IteratorYield(arr);
    };
  }
  return iter;
};
goog.iter.zipLongest = function(fillValue, var_args) {
  var args = Array.prototype.slice.call(arguments, 1), iter = new goog.iter.Iterator();
  if (0 < args.length) {
    var iterators = module$contents$goog$array_map(args, goog.iter.toIterator), allDone = !1;
    iter.next = function() {
      if (allDone) {
        return goog.iter.ES6_ITERATOR_DONE;
      }
      for (var iteratorsHaveValues = !1, arr = [], i = 0, iterator = void 0; iterator = iterators[i++];) {
        var it = iterator.next();
        it.done ? arr.push(fillValue) : (arr.push(it.value), iteratorsHaveValues = !0);
      }
      return iteratorsHaveValues ? goog.iter.createEs6IteratorYield(arr) : (allDone = !0, goog.iter.ES6_ITERATOR_DONE);
    };
  }
  return iter;
};
goog.iter.compress = function(iterable, selectors) {
  var valueIterator = goog.iter.toIterator(iterable), selectorIterator = goog.iter.toIterator(selectors), iter = new goog.iter.Iterator(), allDone = !1;
  iter.next = function() {
    if (allDone) {
      return goog.iter.ES6_ITERATOR_DONE;
    }
    for (;;) {
      var valIt = valueIterator.next();
      if (valIt.done) {
        return allDone = !0, goog.iter.ES6_ITERATOR_DONE;
      }
      var selectorIt = selectorIterator.next();
      if (selectorIt.done) {
        return allDone = !0, goog.iter.ES6_ITERATOR_DONE;
      }
      var val = valIt.value;
      if (selectorIt.value) {
        return goog.iter.createEs6IteratorYield(val);
      }
    }
  };
  return iter;
};
goog.iter.GroupByIterator_ = function(iterable, opt_keyFunc) {
  this.iterator = goog.iter.toIterator(iterable);
  this.keyFunc = opt_keyFunc || goog.functions.identity;
};
goog.inherits(goog.iter.GroupByIterator_, goog.iter.Iterator);
goog.iter.GroupByIterator_.prototype.next = function() {
  for (; this.currentKey == this.targetKey;) {
    var it = this.iterator.next();
    if (it.done) {
      return goog.iter.ES6_ITERATOR_DONE;
    }
    this.currentValue = it.value;
    this.currentKey = this.keyFunc(this.currentValue);
  }
  this.targetKey = this.currentKey;
  return goog.iter.createEs6IteratorYield([this.currentKey, this.groupItems_(this.targetKey)]);
};
goog.iter.GroupByIterator_.prototype.groupItems_ = function(targetKey) {
  for (var arr = []; this.currentKey == targetKey;) {
    arr.push(this.currentValue);
    var it = this.iterator.next();
    if (it.done) {
      break;
    }
    this.currentValue = it.value;
    this.currentKey = this.keyFunc(this.currentValue);
  }
  return arr;
};
goog.iter.groupBy = function(iterable, opt_keyFunc) {
  return new goog.iter.GroupByIterator_(iterable, opt_keyFunc);
};
goog.iter.starMap = function(iterable, f, opt_obj) {
  var iterator = goog.iter.toIterator(iterable), iter = new goog.iter.Iterator();
  iter.next = function() {
    var it = iterator.next();
    if (it.done) {
      return goog.iter.ES6_ITERATOR_DONE;
    }
    var args = goog.iter.toArray(it.value), value = f.apply(opt_obj, [].concat(args, void 0, iterator));
    return goog.iter.createEs6IteratorYield(value);
  };
  return iter;
};
goog.iter.tee = function(iterable, opt_num) {
  function addNextIteratorValueToBuffers() {
    var $jscomp$destructuring$var27 = iterator.next(), value = $jscomp$destructuring$var27.value;
    if ($jscomp$destructuring$var27.done) {
      return !1;
    }
    for (var i = 0, buffer = void 0; buffer = buffers[i++];) {
      buffer.push(value);
    }
    return !0;
  }
  var iterator = goog.iter.toIterator(iterable), buffers = module$contents$goog$array_map(module$contents$goog$array_range("number" === typeof opt_num ? opt_num : 2), function() {
    return [];
  });
  return module$contents$goog$array_map(buffers, function(buffer) {
    var iter = new goog.iter.Iterator();
    iter.next = function() {
      if (module$contents$goog$array_isEmpty(buffer) && !addNextIteratorValueToBuffers()) {
        return goog.iter.ES6_ITERATOR_DONE;
      }
      goog.asserts.assert(!module$contents$goog$array_isEmpty(buffer));
      return goog.iter.createEs6IteratorYield(buffer.shift());
    };
    return iter;
  });
};
goog.iter.enumerate = function(iterable, opt_start) {
  return goog.iter.zip(goog.iter.count(opt_start), iterable);
};
goog.iter.limit = function(iterable, limitSize) {
  goog.asserts.assert(goog.math.isInt(limitSize) && 0 <= limitSize);
  var iterator = goog.iter.toIterator(iterable), iter = new goog.iter.Iterator(), remaining = limitSize;
  iter.next = function() {
    return 0 < remaining-- ? iterator.next() : goog.iter.ES6_ITERATOR_DONE;
  };
  return iter;
};
goog.iter.consume = function(iterable, count) {
  goog.asserts.assert(goog.math.isInt(count) && 0 <= count);
  for (var iterator = goog.iter.toIterator(iterable); 0 < count--;) {
    goog.iter.nextOrValue(iterator, null);
  }
  return iterator;
};
goog.iter.slice = function(iterable, start, opt_end) {
  goog.asserts.assert(goog.math.isInt(start) && 0 <= start);
  var iterator = goog.iter.consume(iterable, start);
  "number" === typeof opt_end && (goog.asserts.assert(goog.math.isInt(opt_end) && opt_end >= start), iterator = goog.iter.limit(iterator, opt_end - start));
  return iterator;
};
goog.iter.hasDuplicates_ = function(arr) {
  var deduped = [];
  module$contents$goog$array_removeDuplicates(arr, deduped);
  return arr.length != deduped.length;
};
goog.iter.permutations = function(iterable, opt_length) {
  var elements = goog.iter.toArray(iterable), product = goog.iter.product.apply(void 0, module$contents$goog$array_repeat(elements, "number" === typeof opt_length ? opt_length : elements.length));
  return goog.iter.filter(product, function(arr) {
    return !goog.iter.hasDuplicates_(arr);
  });
};
goog.iter.combinations = function(iterable, length) {
  function getIndexFromElements(index) {
    return elements[index];
  }
  var elements = goog.iter.toArray(iterable), indexes = goog.iter.range(elements.length), indexIterator = goog.iter.permutations(indexes, length), sortedIndexIterator = goog.iter.filter(indexIterator, function(arr) {
    return module$contents$goog$array_isSorted(arr);
  }), iter = new goog.iter.Iterator();
  iter.next = function() {
    var $jscomp$destructuring$var28 = sortedIndexIterator.next();
    return $jscomp$destructuring$var28.done ? goog.iter.ES6_ITERATOR_DONE : goog.iter.createEs6IteratorYield(module$contents$goog$array_map($jscomp$destructuring$var28.value, getIndexFromElements));
  };
  return iter;
};
goog.iter.combinationsWithReplacement = function(iterable, length) {
  function getIndexFromElements(index) {
    return elements[index];
  }
  var elements = goog.iter.toArray(iterable), indexes = module$contents$goog$array_range(elements.length), indexIterator = goog.iter.product.apply(void 0, module$contents$goog$array_repeat(indexes, length)), sortedIndexIterator = goog.iter.filter(indexIterator, function(arr) {
    return module$contents$goog$array_isSorted(arr);
  }), iter = new goog.iter.Iterator();
  iter.next = function() {
    var $jscomp$destructuring$var29 = sortedIndexIterator.next();
    return $jscomp$destructuring$var29.done ? goog.iter.ES6_ITERATOR_DONE : goog.iter.createEs6IteratorYield(module$contents$goog$array_map($jscomp$destructuring$var29.value, getIndexFromElements));
  };
  return iter;
};
goog.iter.es6 = {};
var module$contents$goog$iter$es6_ShimIterable = function() {
};
module$contents$goog$iter$es6_ShimIterable.prototype.__iterator__ = function() {
};
module$contents$goog$iter$es6_ShimIterable.prototype.toGoog = function() {
};
module$contents$goog$iter$es6_ShimIterable.prototype.toEs6 = function() {
};
module$contents$goog$iter$es6_ShimIterable.of = function(iter) {
  if (iter instanceof module$contents$goog$iter$es6_ShimIterableImpl || iter instanceof module$contents$goog$iter$es6_ShimGoogIterator || iter instanceof module$contents$goog$iter$es6_ShimEs6Iterator) {
    return iter;
  }
  if ("function" == typeof iter.next) {
    return new module$contents$goog$iter$es6_ShimIterableImpl(function() {
      return iter;
    });
  }
  if ("function" == typeof iter[Symbol.iterator]) {
    return new module$contents$goog$iter$es6_ShimIterableImpl(function() {
      return iter[Symbol.iterator]();
    });
  }
  if ("function" == typeof iter.__iterator__) {
    return new module$contents$goog$iter$es6_ShimIterableImpl(function() {
      return iter.__iterator__();
    });
  }
  throw Error("Not an iterator or iterable.");
};
var module$contents$goog$iter$es6_ShimIterableImpl = function(func) {
  this.func_ = func;
};
module$contents$goog$iter$es6_ShimIterableImpl.prototype.__iterator__ = function() {
  return new module$contents$goog$iter$es6_ShimGoogIterator(this.func_());
};
module$contents$goog$iter$es6_ShimIterableImpl.prototype.toGoog = function() {
  return new module$contents$goog$iter$es6_ShimGoogIterator(this.func_());
};
module$contents$goog$iter$es6_ShimIterableImpl.prototype[Symbol.iterator] = function() {
  return new module$contents$goog$iter$es6_ShimEs6Iterator(this.func_());
};
module$contents$goog$iter$es6_ShimIterableImpl.prototype.toEs6 = function() {
  return new module$contents$goog$iter$es6_ShimEs6Iterator(this.func_());
};
var module$contents$goog$iter$es6_ShimGoogIterator = function(iter) {
  goog.iter.Iterator.call(this);
  this.iter_ = iter;
};
$jscomp.inherits(module$contents$goog$iter$es6_ShimGoogIterator, goog.iter.Iterator);
module$contents$goog$iter$es6_ShimGoogIterator.prototype.next = function() {
  return this.iter_.next();
};
module$contents$goog$iter$es6_ShimGoogIterator.prototype.toGoog = function() {
  return this;
};
module$contents$goog$iter$es6_ShimGoogIterator.prototype[Symbol.iterator] = function() {
  return new module$contents$goog$iter$es6_ShimEs6Iterator(this.iter_);
};
module$contents$goog$iter$es6_ShimGoogIterator.prototype.toEs6 = function() {
  return new module$contents$goog$iter$es6_ShimEs6Iterator(this.iter_);
};
var module$contents$goog$iter$es6_ShimEs6Iterator = function(iter) {
  module$contents$goog$iter$es6_ShimIterableImpl.call(this, function() {
    return iter;
  });
  this.iter_ = iter;
};
$jscomp.inherits(module$contents$goog$iter$es6_ShimEs6Iterator, module$contents$goog$iter$es6_ShimIterableImpl);
module$contents$goog$iter$es6_ShimEs6Iterator.prototype.next = function() {
  return this.iter_.next();
};
goog.iter.es6.ShimIterable = module$contents$goog$iter$es6_ShimIterable;
goog.iter.es6.ShimEs6Iterator = module$contents$goog$iter$es6_ShimEs6Iterator;
goog.iter.es6.ShimGoogIterator = module$contents$goog$iter$es6_ShimGoogIterator;
goog.structs.Map = function(opt_map, var_args) {
  this.map_ = {};
  this.keys_ = [];
  this.version_ = this.size = 0;
  var argLength = arguments.length;
  if (1 < argLength) {
    if (argLength % 2) {
      throw Error("Uneven number of arguments");
    }
    for (var i = 0; i < argLength; i += 2) {
      this.set(arguments[i], arguments[i + 1]);
    }
  } else {
    opt_map && this.addAll(opt_map);
  }
};
goog.structs.Map.prototype.getCount = function() {
  return this.size;
};
goog.structs.Map.prototype.getValues = function() {
  this.cleanupKeysArray_();
  for (var rv = [], i = 0; i < this.keys_.length; i++) {
    rv.push(this.map_[this.keys_[i]]);
  }
  return rv;
};
goog.structs.Map.prototype.getKeys = function() {
  this.cleanupKeysArray_();
  return this.keys_.concat();
};
goog.structs.Map.prototype.containsKey = function(key) {
  return this.has(key);
};
goog.structs.Map.prototype.has = function(key) {
  return goog.structs.Map.hasKey_(this.map_, key);
};
goog.structs.Map.prototype.containsValue = function(val) {
  for (var i = 0; i < this.keys_.length; i++) {
    var key = this.keys_[i];
    if (goog.structs.Map.hasKey_(this.map_, key) && this.map_[key] == val) {
      return !0;
    }
  }
  return !1;
};
goog.structs.Map.prototype.equals = function(otherMap, opt_equalityFn) {
  if (this === otherMap) {
    return !0;
  }
  if (this.size != otherMap.getCount()) {
    return !1;
  }
  var equalityFn = opt_equalityFn || goog.structs.Map.defaultEquals;
  this.cleanupKeysArray_();
  for (var key, i = 0; key = this.keys_[i]; i++) {
    if (!equalityFn(this.get(key), otherMap.get(key))) {
      return !1;
    }
  }
  return !0;
};
goog.structs.Map.defaultEquals = function(a, b) {
  return a === b;
};
goog.structs.Map.prototype.isEmpty = function() {
  return 0 == this.size;
};
goog.structs.Map.prototype.clear = function() {
  this.map_ = {};
  this.keys_.length = 0;
  this.setSizeInternal_(0);
  this.version_ = 0;
};
goog.structs.Map.prototype.remove = function(key) {
  return this.delete(key);
};
goog.structs.Map.prototype.delete = function(key) {
  return goog.structs.Map.hasKey_(this.map_, key) ? (delete this.map_[key], this.setSizeInternal_(this.size - 1), this.version_++, this.keys_.length > 2 * this.size && this.cleanupKeysArray_(), !0) : !1;
};
goog.structs.Map.prototype.cleanupKeysArray_ = function() {
  if (this.size != this.keys_.length) {
    for (var srcIndex = 0, destIndex = 0; srcIndex < this.keys_.length;) {
      var key = this.keys_[srcIndex];
      goog.structs.Map.hasKey_(this.map_, key) && (this.keys_[destIndex++] = key);
      srcIndex++;
    }
    this.keys_.length = destIndex;
  }
  if (this.size != this.keys_.length) {
    var seen = {};
    for (destIndex = srcIndex = 0; srcIndex < this.keys_.length;) {
      key = this.keys_[srcIndex], goog.structs.Map.hasKey_(seen, key) || (this.keys_[destIndex++] = key, seen[key] = 1), srcIndex++;
    }
    this.keys_.length = destIndex;
  }
};
goog.structs.Map.prototype.get = function(key, opt_val) {
  return goog.structs.Map.hasKey_(this.map_, key) ? this.map_[key] : opt_val;
};
goog.structs.Map.prototype.set = function(key, value) {
  goog.structs.Map.hasKey_(this.map_, key) || (this.setSizeInternal_(this.size + 1), this.keys_.push(key), this.version_++);
  this.map_[key] = value;
};
goog.structs.Map.prototype.addAll = function(map) {
  if (map instanceof goog.structs.Map) {
    for (var keys = map.getKeys(), i = 0; i < keys.length; i++) {
      this.set(keys[i], map.get(keys[i]));
    }
  } else {
    for (var key in map) {
      this.set(key, map[key]);
    }
  }
};
goog.structs.Map.prototype.forEach = function(f, opt_obj) {
  for (var keys = this.getKeys(), i = 0; i < keys.length; i++) {
    var key = keys[i], value = this.get(key);
    f.call(opt_obj, value, key, this);
  }
};
goog.structs.Map.prototype.clone = function() {
  return new goog.structs.Map(this);
};
goog.structs.Map.prototype.transpose = function() {
  for (var transposed = new goog.structs.Map(), i = 0; i < this.keys_.length; i++) {
    var key = this.keys_[i];
    transposed.set(this.map_[key], key);
  }
  return transposed;
};
goog.structs.Map.prototype.toObject = function() {
  this.cleanupKeysArray_();
  for (var obj = {}, i = 0; i < this.keys_.length; i++) {
    var key = this.keys_[i];
    obj[key] = this.map_[key];
  }
  return obj;
};
goog.structs.Map.prototype.getKeyIterator = function() {
  return this.__iterator__(!0);
};
goog.structs.Map.prototype.keys = function() {
  return module$contents$goog$iter$es6_ShimIterable.of(this.getKeyIterator()).toEs6();
};
goog.structs.Map.prototype.getValueIterator = function() {
  return this.__iterator__(!1);
};
goog.structs.Map.prototype.values = function() {
  return module$contents$goog$iter$es6_ShimIterable.of(this.getValueIterator()).toEs6();
};
goog.structs.Map.prototype.entries = function() {
  var self = this;
  return goog.collections.iters.map(this.keys(), function(key) {
    return [key, self.get(key)];
  });
};
goog.structs.Map.prototype.__iterator__ = function(opt_keys) {
  this.cleanupKeysArray_();
  var i = 0, version = this.version_, selfObj = this, newIter = new goog.iter.Iterator();
  newIter.next = function() {
    if (version != selfObj.version_) {
      throw Error("The map has changed since the iterator was created");
    }
    if (i >= selfObj.keys_.length) {
      return goog.iter.ES6_ITERATOR_DONE;
    }
    var key = selfObj.keys_[i++];
    return goog.iter.createEs6IteratorYield(opt_keys ? key : selfObj.map_[key]);
  };
  return newIter;
};
goog.structs.Map.prototype.setSizeInternal_ = function(newSize) {
  this.size = newSize;
};
goog.structs.Map.hasKey_ = function(obj, key) {
  return Object.prototype.hasOwnProperty.call(obj, key);
};
goog.structs.Set = function(opt_values) {
  this.map_ = new goog.structs.Map();
  this.size = 0;
  opt_values && this.addAll(opt_values);
};
goog.structs.Set.getUid_ = goog.getUid;
goog.structs.Set.getKey_ = function(val) {
  var type = typeof val;
  return "object" == type && val || "function" == type ? "o" + goog.getUid(val) : type.slice(0, 1) + val;
};
goog.structs.Set.prototype.getCount = function() {
  return this.map_.size;
};
goog.structs.Set.prototype.add = function(element) {
  this.map_.set(goog.structs.Set.getKey_(element), element);
  this.setSizeInternal_(this.map_.size);
};
goog.structs.Set.prototype.addAll = function(col) {
  for (var values = goog.structs.getValues(col), l = values.length, i = 0; i < l; i++) {
    this.add(values[i]);
  }
  this.setSizeInternal_(this.map_.size);
};
goog.structs.Set.prototype.removeAll = function(col) {
  for (var values = goog.structs.getValues(col), l = values.length, i = 0; i < l; i++) {
    this.remove(values[i]);
  }
  this.setSizeInternal_(this.map_.size);
};
goog.structs.Set.prototype.delete = function(element) {
  var rv = this.map_.remove(goog.structs.Set.getKey_(element));
  this.setSizeInternal_(this.map_.size);
  return rv;
};
goog.structs.Set.prototype.remove = function(element) {
  return this.delete(element);
};
goog.structs.Set.prototype.clear = function() {
  this.map_.clear();
  this.setSizeInternal_(0);
};
goog.structs.Set.prototype.isEmpty = function() {
  return 0 === this.map_.size;
};
goog.structs.Set.prototype.has = function(element) {
  return this.map_.containsKey(goog.structs.Set.getKey_(element));
};
goog.structs.Set.prototype.contains = function(element) {
  return this.map_.containsKey(goog.structs.Set.getKey_(element));
};
goog.structs.Set.prototype.containsAll = function(col) {
  return goog.structs.every(col, this.contains, this);
};
goog.structs.Set.prototype.intersection = function(col) {
  for (var result = new goog.structs.Set(), values = goog.structs.getValues(col), i = 0; i < values.length; i++) {
    var value = values[i];
    this.contains(value) && result.add(value);
  }
  return result;
};
goog.structs.Set.prototype.difference = function(col) {
  var result = this.clone();
  result.removeAll(col);
  return result;
};
goog.structs.Set.prototype.getValues = function() {
  return this.map_.getValues();
};
goog.structs.Set.prototype.values = function() {
  return this.map_.values();
};
goog.structs.Set.prototype.clone = function() {
  return new goog.structs.Set(this);
};
goog.structs.Set.prototype.equals = function(col) {
  return this.getCount() == goog.structs.getCount(col) && this.isSubsetOf(col);
};
goog.structs.Set.prototype.isSubsetOf = function(col) {
  var colCount = goog.structs.getCount(col);
  if (this.getCount() > colCount) {
    return !1;
  }
  !(col instanceof goog.structs.Set) && 5 < colCount && (col = new goog.structs.Set(col));
  return goog.structs.every(this, function(value) {
    return goog.structs.contains(col, value);
  });
};
goog.structs.Set.prototype.__iterator__ = function(opt_keys) {
  return this.map_.__iterator__(!1);
};
goog.structs.Set.prototype[Symbol.iterator] = function() {
  return this.values();
};
goog.structs.Set.prototype.setSizeInternal_ = function(newSize) {
  this.size = newSize;
};
var ee = {AbstractOverlay:function(url, mapId, token, opt_init, opt_profiler) {
  goog.events.EventTarget.call(this);
  this.mapId = mapId;
  this.token = token;
  this.tilesLoading = [];
  this.tilesFailed = new goog.structs.Set();
  this.tileCounter = 0;
  this.url = url;
}};
goog.inherits(ee.AbstractOverlay, goog.events.EventTarget);
goog.exportSymbol("ee.AbstractOverlay", ee.AbstractOverlay);
ee.AbstractOverlay.EventType = {TILE_LOADED:"tileevent"};
ee.AbstractOverlay.prototype.getTileId = function(coord, zoom) {
  var maxCoord = 1 << zoom, x = coord.x % maxCoord;
  0 > x && (x += maxCoord);
  return [this.mapId, zoom, x, coord.y].join("/");
};
ee.AbstractOverlay.prototype.getLoadingTilesCount = function() {
  return this.tilesLoading.length;
};
ee.AbstractOverlay.prototype.getFailedTilesCount = function() {
  return this.tilesFailed.getCount();
};
ee.TileEvent = function(count) {
  goog.events.Event.call(this, ee.AbstractOverlay.EventType.TILE_LOADED);
  this.count = count;
};
goog.inherits(ee.TileEvent, goog.events.Event);
var module$exports$eeapiclient$ee_api_client = {}, module$contents$eeapiclient$ee_api_client_module = module$contents$eeapiclient$ee_api_client_module || {id:"third_party/earthengine_api/javascript/v1/ee_api_client.closure.js"};
module$exports$eeapiclient$ee_api_client.IAuditLogConfigLogTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.AuditLogConfigLogTypeEnum = {ADMIN_READ:"ADMIN_READ", DATA_READ:"DATA_READ", DATA_WRITE:"DATA_WRITE", LOG_TYPE_UNSPECIFIED:"LOG_TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.AuditLogConfigLogTypeEnum.LOG_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.AuditLogConfigLogTypeEnum.ADMIN_READ, module$exports$eeapiclient$ee_api_client.AuditLogConfigLogTypeEnum.DATA_WRITE, module$exports$eeapiclient$ee_api_client.AuditLogConfigLogTypeEnum.DATA_READ];
}};
module$exports$eeapiclient$ee_api_client.IAuthorizationLoggingOptionsPermissionTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum = {ADMIN_READ:"ADMIN_READ", ADMIN_WRITE:"ADMIN_WRITE", DATA_READ:"DATA_READ", DATA_WRITE:"DATA_WRITE", PERMISSION_TYPE_UNSPECIFIED:"PERMISSION_TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum.PERMISSION_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum.ADMIN_READ, module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum.ADMIN_WRITE, module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum.DATA_READ, 
  module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum.DATA_WRITE];
}};
module$exports$eeapiclient$ee_api_client.ICapabilitiesCapabilitiesEnum = function() {
};
module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum = {AUTO_APPEAL_ELIGIBLE:"AUTO_APPEAL_ELIGIBLE", CAPABILITY_GROUP_UNSPECIFIED:"CAPABILITY_GROUP_UNSPECIFIED", CLOUD_ALPHA:"CLOUD_ALPHA", EXTERNAL:"EXTERNAL", INTERNAL:"INTERNAL", LIMITED:"LIMITED", PREAUTHORIZED:"PREAUTHORIZED", PREVIEW:"PREVIEW", PUBLIC:"PUBLIC", RESTRICTED:"RESTRICTED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.CAPABILITY_GROUP_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.PUBLIC, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.INTERNAL, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.EXTERNAL, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.LIMITED, 
  module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.PREAUTHORIZED, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.PREVIEW, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.CLOUD_ALPHA, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.RESTRICTED, module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum.AUTO_APPEAL_ELIGIBLE];
}};
module$exports$eeapiclient$ee_api_client.IChangeSubscriptionTypeRequestChangeTimeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum = {CHANGE_TIME_TYPE_UNSPECIFIED:"CHANGE_TIME_TYPE_UNSPECIFIED", EARLIEST_POSSIBLE:"EARLIEST_POSSIBLE", END_OF_PERIOD:"END_OF_PERIOD", END_OF_TERM:"END_OF_TERM", SPECIFIC_DATE:"SPECIFIC_DATE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum.CHANGE_TIME_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum.END_OF_PERIOD, module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum.EARLIEST_POSSIBLE, module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum.SPECIFIC_DATE, 
  module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum.END_OF_TERM];
}};
module$exports$eeapiclient$ee_api_client.IChangeSubscriptionTypeRequestTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum = {BASIC:"BASIC", NO_SUBSCRIPTION:"NO_SUBSCRIPTION", PREMIUM:"PREMIUM", PROFESSIONAL:"PROFESSIONAL", TYPE_UNSPECIFIED:"TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum.TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum.NO_SUBSCRIPTION, module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum.BASIC, module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum.PROFESSIONAL, 
  module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum.PREMIUM];
}};
module$exports$eeapiclient$ee_api_client.ICloudAuditOptionsLogNameEnum = function() {
};
module$exports$eeapiclient$ee_api_client.CloudAuditOptionsLogNameEnum = {ADMIN_ACTIVITY:"ADMIN_ACTIVITY", DATA_ACCESS:"DATA_ACCESS", UNSPECIFIED_LOG_NAME:"UNSPECIFIED_LOG_NAME", values:function() {
  return [module$exports$eeapiclient$ee_api_client.CloudAuditOptionsLogNameEnum.UNSPECIFIED_LOG_NAME, module$exports$eeapiclient$ee_api_client.CloudAuditOptionsLogNameEnum.ADMIN_ACTIVITY, module$exports$eeapiclient$ee_api_client.CloudAuditOptionsLogNameEnum.DATA_ACCESS];
}};
module$exports$eeapiclient$ee_api_client.ICloudAuditOptionsPermissionTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum = {ADMIN_READ:"ADMIN_READ", ADMIN_WRITE:"ADMIN_WRITE", DATA_READ:"DATA_READ", DATA_WRITE:"DATA_WRITE", PERMISSION_TYPE_UNSPECIFIED:"PERMISSION_TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum.PERMISSION_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum.ADMIN_READ, module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum.ADMIN_WRITE, module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum.DATA_READ, 
  module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum.DATA_WRITE];
}};
module$exports$eeapiclient$ee_api_client.ICloudStorageDestinationPermissionsEnum = function() {
};
module$exports$eeapiclient$ee_api_client.CloudStorageDestinationPermissionsEnum = {DEFAULT_OBJECT_ACL:"DEFAULT_OBJECT_ACL", PUBLIC:"PUBLIC", TILE_PERMISSIONS_UNSPECIFIED:"TILE_PERMISSIONS_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.CloudStorageDestinationPermissionsEnum.TILE_PERMISSIONS_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.CloudStorageDestinationPermissionsEnum.PUBLIC, module$exports$eeapiclient$ee_api_client.CloudStorageDestinationPermissionsEnum.DEFAULT_OBJECT_ACL];
}};
module$exports$eeapiclient$ee_api_client.IComputePixelsRequestFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum = {AUTO_JPEG_PNG:"AUTO_JPEG_PNG", GEO_TIFF:"GEO_TIFF", IMAGE_FILE_FORMAT_UNSPECIFIED:"IMAGE_FILE_FORMAT_UNSPECIFIED", JPEG:"JPEG", MULTI_BAND_IMAGE_TILE:"MULTI_BAND_IMAGE_TILE", NPY:"NPY", PNG:"PNG", TF_RECORD_IMAGE:"TF_RECORD_IMAGE", ZIPPED_GEO_TIFF:"ZIPPED_GEO_TIFF", ZIPPED_GEO_TIFF_PER_BAND:"ZIPPED_GEO_TIFF_PER_BAND", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.IMAGE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.JPEG, module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.PNG, module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.AUTO_JPEG_PNG, 
  module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.NPY, module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.GEO_TIFF, module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.TF_RECORD_IMAGE, module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.MULTI_BAND_IMAGE_TILE, 
  module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.ZIPPED_GEO_TIFF, module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum.ZIPPED_GEO_TIFF_PER_BAND];
}};
module$exports$eeapiclient$ee_api_client.IConditionIamEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ConditionIamEnum = {APPROVER:"APPROVER", ATTRIBUTION:"ATTRIBUTION", AUTHORITY:"AUTHORITY", CREDENTIALS_TYPE:"CREDENTIALS_TYPE", CREDS_ASSERTION:"CREDS_ASSERTION", JUSTIFICATION_TYPE:"JUSTIFICATION_TYPE", NO_ATTR:"NO_ATTR", SECURITY_REALM:"SECURITY_REALM", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ConditionIamEnum.NO_ATTR, module$exports$eeapiclient$ee_api_client.ConditionIamEnum.AUTHORITY, module$exports$eeapiclient$ee_api_client.ConditionIamEnum.ATTRIBUTION, module$exports$eeapiclient$ee_api_client.ConditionIamEnum.SECURITY_REALM, module$exports$eeapiclient$ee_api_client.ConditionIamEnum.APPROVER, 
  module$exports$eeapiclient$ee_api_client.ConditionIamEnum.JUSTIFICATION_TYPE, module$exports$eeapiclient$ee_api_client.ConditionIamEnum.CREDENTIALS_TYPE, module$exports$eeapiclient$ee_api_client.ConditionIamEnum.CREDS_ASSERTION];
}};
module$exports$eeapiclient$ee_api_client.IConditionOpEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ConditionOpEnum = {DISCHARGED:"DISCHARGED", EQUALS:"EQUALS", IN:"IN", NOT_EQUALS:"NOT_EQUALS", NOT_IN:"NOT_IN", NO_OP:"NO_OP", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ConditionOpEnum.NO_OP, module$exports$eeapiclient$ee_api_client.ConditionOpEnum.EQUALS, module$exports$eeapiclient$ee_api_client.ConditionOpEnum.NOT_EQUALS, module$exports$eeapiclient$ee_api_client.ConditionOpEnum.IN, module$exports$eeapiclient$ee_api_client.ConditionOpEnum.NOT_IN, 
  module$exports$eeapiclient$ee_api_client.ConditionOpEnum.DISCHARGED];
}};
module$exports$eeapiclient$ee_api_client.IConditionSysEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ConditionSysEnum = {IP:"IP", NAME:"NAME", NO_ATTR:"NO_ATTR", REGION:"REGION", SERVICE:"SERVICE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ConditionSysEnum.NO_ATTR, module$exports$eeapiclient$ee_api_client.ConditionSysEnum.REGION, module$exports$eeapiclient$ee_api_client.ConditionSysEnum.SERVICE, module$exports$eeapiclient$ee_api_client.ConditionSysEnum.NAME, module$exports$eeapiclient$ee_api_client.ConditionSysEnum.IP];
}};
module$exports$eeapiclient$ee_api_client.IDataAccessOptionsLogModeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.DataAccessOptionsLogModeEnum = {LOG_FAIL_CLOSED:"LOG_FAIL_CLOSED", LOG_MODE_UNSPECIFIED:"LOG_MODE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.DataAccessOptionsLogModeEnum.LOG_MODE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.DataAccessOptionsLogModeEnum.LOG_FAIL_CLOSED];
}};
module$exports$eeapiclient$ee_api_client.IEarthEngineAssetTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum = {CLASSIFIER:"CLASSIFIER", FEATURE_VIEW:"FEATURE_VIEW", FOLDER:"FOLDER", IMAGE:"IMAGE", IMAGE_COLLECTION:"IMAGE_COLLECTION", TABLE:"TABLE", TYPE_UNSPECIFIED:"TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum.TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum.IMAGE, module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum.IMAGE_COLLECTION, module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum.TABLE, module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum.FOLDER, 
  module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum.CLASSIFIER, module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum.FEATURE_VIEW];
}};
module$exports$eeapiclient$ee_api_client.IEarthEngineMapFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum = {AUTO_JPEG_PNG:"AUTO_JPEG_PNG", GEO_TIFF:"GEO_TIFF", IMAGE_FILE_FORMAT_UNSPECIFIED:"IMAGE_FILE_FORMAT_UNSPECIFIED", JPEG:"JPEG", MULTI_BAND_IMAGE_TILE:"MULTI_BAND_IMAGE_TILE", NPY:"NPY", PNG:"PNG", TF_RECORD_IMAGE:"TF_RECORD_IMAGE", ZIPPED_GEO_TIFF:"ZIPPED_GEO_TIFF", ZIPPED_GEO_TIFF_PER_BAND:"ZIPPED_GEO_TIFF_PER_BAND", values:function() {
  return [module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.IMAGE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.JPEG, module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.PNG, module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.AUTO_JPEG_PNG, module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.NPY, 
  module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.GEO_TIFF, module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.TF_RECORD_IMAGE, module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.MULTI_BAND_IMAGE_TILE, module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.ZIPPED_GEO_TIFF, 
  module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum.ZIPPED_GEO_TIFF_PER_BAND];
}};
module$exports$eeapiclient$ee_api_client.IExportVideoMapRequestVersionEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ExportVideoMapRequestVersionEnum = {V1:"V1", V2:"V2", VERSION_UNSPECIFIED:"VERSION_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ExportVideoMapRequestVersionEnum.VERSION_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ExportVideoMapRequestVersionEnum.V1, module$exports$eeapiclient$ee_api_client.ExportVideoMapRequestVersionEnum.V2];
}};
module$exports$eeapiclient$ee_api_client.IFeatureViewAttributeTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum = {BOOLEAN:"BOOLEAN", DATE_TIME:"DATE_TIME", DOUBLE:"DOUBLE", INTEGER:"INTEGER", STRING:"STRING", TYPE_UNSPECIFIED:"TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum.TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum.INTEGER, module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum.BOOLEAN, module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum.DOUBLE, module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum.STRING, 
  module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum.DATE_TIME];
}};
module$exports$eeapiclient$ee_api_client.IFeatureViewDestinationPermissionsEnum = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewDestinationPermissionsEnum = {FEATURE_VIEW_ASSET_PERMISSIONS_UNSPECIFIED:"FEATURE_VIEW_ASSET_PERMISSIONS_UNSPECIFIED", PUBLIC:"PUBLIC", values:function() {
  return [module$exports$eeapiclient$ee_api_client.FeatureViewDestinationPermissionsEnum.FEATURE_VIEW_ASSET_PERMISSIONS_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.FeatureViewDestinationPermissionsEnum.PUBLIC];
}};
module$exports$eeapiclient$ee_api_client.IFilmstripThumbnailFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum = {AUTO_JPEG_PNG:"AUTO_JPEG_PNG", GEO_TIFF:"GEO_TIFF", IMAGE_FILE_FORMAT_UNSPECIFIED:"IMAGE_FILE_FORMAT_UNSPECIFIED", JPEG:"JPEG", MULTI_BAND_IMAGE_TILE:"MULTI_BAND_IMAGE_TILE", NPY:"NPY", PNG:"PNG", TF_RECORD_IMAGE:"TF_RECORD_IMAGE", ZIPPED_GEO_TIFF:"ZIPPED_GEO_TIFF", ZIPPED_GEO_TIFF_PER_BAND:"ZIPPED_GEO_TIFF_PER_BAND", values:function() {
  return [module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.IMAGE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.JPEG, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.PNG, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.AUTO_JPEG_PNG, 
  module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.NPY, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.GEO_TIFF, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.TF_RECORD_IMAGE, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.MULTI_BAND_IMAGE_TILE, 
  module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.ZIPPED_GEO_TIFF, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum.ZIPPED_GEO_TIFF_PER_BAND];
}};
module$exports$eeapiclient$ee_api_client.IFilmstripThumbnailOrientationEnum = function() {
};
module$exports$eeapiclient$ee_api_client.FilmstripThumbnailOrientationEnum = {HORIZONTAL:"HORIZONTAL", ORIENTATION_UNSPECIFIED:"ORIENTATION_UNSPECIFIED", VERTICAL:"VERTICAL", values:function() {
  return [module$exports$eeapiclient$ee_api_client.FilmstripThumbnailOrientationEnum.ORIENTATION_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailOrientationEnum.HORIZONTAL, module$exports$eeapiclient$ee_api_client.FilmstripThumbnailOrientationEnum.VERTICAL];
}};
module$exports$eeapiclient$ee_api_client.IGetPixelsRequestFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum = {AUTO_JPEG_PNG:"AUTO_JPEG_PNG", GEO_TIFF:"GEO_TIFF", IMAGE_FILE_FORMAT_UNSPECIFIED:"IMAGE_FILE_FORMAT_UNSPECIFIED", JPEG:"JPEG", MULTI_BAND_IMAGE_TILE:"MULTI_BAND_IMAGE_TILE", NPY:"NPY", PNG:"PNG", TF_RECORD_IMAGE:"TF_RECORD_IMAGE", ZIPPED_GEO_TIFF:"ZIPPED_GEO_TIFF", ZIPPED_GEO_TIFF_PER_BAND:"ZIPPED_GEO_TIFF_PER_BAND", values:function() {
  return [module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.IMAGE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.JPEG, module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.PNG, module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.AUTO_JPEG_PNG, 
  module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.NPY, module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.GEO_TIFF, module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.TF_RECORD_IMAGE, module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.MULTI_BAND_IMAGE_TILE, module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.ZIPPED_GEO_TIFF, 
  module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum.ZIPPED_GEO_TIFF_PER_BAND];
}};
module$exports$eeapiclient$ee_api_client.IImageAssetExportOptionsPyramidingPolicyEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum = {MAX:"MAX", MEAN:"MEAN", MEDIAN:"MEDIAN", MIN:"MIN", MODE:"MODE", PYRAMIDING_POLICY_UNSPECIFIED:"PYRAMIDING_POLICY_UNSPECIFIED", SAMPLE:"SAMPLE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum.PYRAMIDING_POLICY_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum.MEAN, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum.SAMPLE, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum.MIN, 
  module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum.MAX, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum.MODE, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum.MEDIAN];
}};
module$exports$eeapiclient$ee_api_client.IImageAssetExportOptionsPyramidingPolicyOverridesEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum = {MAX:"MAX", MEAN:"MEAN", MEDIAN:"MEDIAN", MIN:"MIN", MODE:"MODE", PYRAMIDING_POLICY_UNSPECIFIED:"PYRAMIDING_POLICY_UNSPECIFIED", SAMPLE:"SAMPLE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum.PYRAMIDING_POLICY_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum.MEAN, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum.SAMPLE, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum.MIN, 
  module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum.MAX, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum.MODE, module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum.MEDIAN];
}};
module$exports$eeapiclient$ee_api_client.IImageBandPyramidingPolicyEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum = {MAX:"MAX", MEAN:"MEAN", MEDIAN:"MEDIAN", MIN:"MIN", MODE:"MODE", PYRAMIDING_POLICY_UNSPECIFIED:"PYRAMIDING_POLICY_UNSPECIFIED", SAMPLE:"SAMPLE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum.PYRAMIDING_POLICY_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum.MEAN, module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum.SAMPLE, module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum.MIN, module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum.MAX, 
  module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum.MODE, module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum.MEDIAN];
}};
module$exports$eeapiclient$ee_api_client.IImageFileExportOptionsFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum = {AUTO_JPEG_PNG:"AUTO_JPEG_PNG", GEO_TIFF:"GEO_TIFF", IMAGE_FILE_FORMAT_UNSPECIFIED:"IMAGE_FILE_FORMAT_UNSPECIFIED", JPEG:"JPEG", MULTI_BAND_IMAGE_TILE:"MULTI_BAND_IMAGE_TILE", NPY:"NPY", PNG:"PNG", TF_RECORD_IMAGE:"TF_RECORD_IMAGE", ZIPPED_GEO_TIFF:"ZIPPED_GEO_TIFF", ZIPPED_GEO_TIFF_PER_BAND:"ZIPPED_GEO_TIFF_PER_BAND", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.IMAGE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.JPEG, module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.PNG, module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.AUTO_JPEG_PNG, 
  module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.NPY, module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.GEO_TIFF, module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.TF_RECORD_IMAGE, module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.MULTI_BAND_IMAGE_TILE, 
  module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.ZIPPED_GEO_TIFF, module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum.ZIPPED_GEO_TIFF_PER_BAND];
}};
module$exports$eeapiclient$ee_api_client.IImageManifestPyramidingPolicyEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum = {MAX:"MAX", MEAN:"MEAN", MEDIAN:"MEDIAN", MIN:"MIN", MODE:"MODE", PYRAMIDING_POLICY_UNSPECIFIED:"PYRAMIDING_POLICY_UNSPECIFIED", SAMPLE:"SAMPLE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum.PYRAMIDING_POLICY_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum.MEAN, module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum.SAMPLE, module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum.MIN, 
  module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum.MAX, module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum.MODE, module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum.MEDIAN];
}};
module$exports$eeapiclient$ee_api_client.IImportImageRequestModeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ImportImageRequestModeEnum = {IMPORT_MODE_UNSPECIFIED:"IMPORT_MODE_UNSPECIFIED", INGEST:"INGEST", VIRTUAL:"VIRTUAL", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ImportImageRequestModeEnum.IMPORT_MODE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ImportImageRequestModeEnum.INGEST, module$exports$eeapiclient$ee_api_client.ImportImageRequestModeEnum.VIRTUAL];
}};
module$exports$eeapiclient$ee_api_client.IOperationMetadataStateEnum = function() {
};
module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum = {CANCELLED:"CANCELLED", CANCELLING:"CANCELLING", FAILED:"FAILED", PENDING:"PENDING", RUNNING:"RUNNING", STATE_UNSPECIFIED:"STATE_UNSPECIFIED", SUCCEEDED:"SUCCEEDED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum.STATE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum.PENDING, module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum.RUNNING, module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum.CANCELLING, module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum.SUCCEEDED, 
  module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum.CANCELLED, module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum.FAILED];
}};
module$exports$eeapiclient$ee_api_client.IOperationNotificationSeverityEnum = function() {
};
module$exports$eeapiclient$ee_api_client.OperationNotificationSeverityEnum = {SEVERE:"SEVERE", SEVERITY_UNSPECIFIED:"SEVERITY_UNSPECIFIED", WARNING:"WARNING", values:function() {
  return [module$exports$eeapiclient$ee_api_client.OperationNotificationSeverityEnum.SEVERITY_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.OperationNotificationSeverityEnum.WARNING, module$exports$eeapiclient$ee_api_client.OperationNotificationSeverityEnum.SEVERE];
}};
module$exports$eeapiclient$ee_api_client.IPixelDataTypePrecisionEnum = function() {
};
module$exports$eeapiclient$ee_api_client.PixelDataTypePrecisionEnum = {DOUBLE:"DOUBLE", FLOAT:"FLOAT", INT:"INT", PRECISION_UNSPECIFIED:"PRECISION_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.PixelDataTypePrecisionEnum.PRECISION_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.PixelDataTypePrecisionEnum.INT, module$exports$eeapiclient$ee_api_client.PixelDataTypePrecisionEnum.FLOAT, module$exports$eeapiclient$ee_api_client.PixelDataTypePrecisionEnum.DOUBLE];
}};
module$exports$eeapiclient$ee_api_client.IProjectRegistrationBillingConsentEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectRegistrationBillingConsentEnum = {BILLING_CONSENT_FULL:"BILLING_CONSENT_FULL", BILLING_CONSENT_NONE:"BILLING_CONSENT_NONE", BILLING_CONSENT_UNSPECIFIED:"BILLING_CONSENT_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectRegistrationBillingConsentEnum.BILLING_CONSENT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ProjectRegistrationBillingConsentEnum.BILLING_CONSENT_NONE, module$exports$eeapiclient$ee_api_client.ProjectRegistrationBillingConsentEnum.BILLING_CONSENT_FULL];
}};
module$exports$eeapiclient$ee_api_client.IProjectRegistrationFreeQuotaEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectRegistrationFreeQuotaEnum = {FREE_QUOTA_FULL:"FREE_QUOTA_FULL", FREE_QUOTA_NONE:"FREE_QUOTA_NONE", FREE_QUOTA_UNSPECIFIED:"FREE_QUOTA_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectRegistrationFreeQuotaEnum.FREE_QUOTA_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ProjectRegistrationFreeQuotaEnum.FREE_QUOTA_NONE, module$exports$eeapiclient$ee_api_client.ProjectRegistrationFreeQuotaEnum.FREE_QUOTA_FULL];
}};
module$exports$eeapiclient$ee_api_client.IRankByOneThingRuleDirectionEnum = function() {
};
module$exports$eeapiclient$ee_api_client.RankByOneThingRuleDirectionEnum = {ASCENDING:"ASCENDING", DESCENDING:"DESCENDING", DIRECTION_UNSPECIFIED:"DIRECTION_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.RankByOneThingRuleDirectionEnum.DIRECTION_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.RankByOneThingRuleDirectionEnum.ASCENDING, module$exports$eeapiclient$ee_api_client.RankByOneThingRuleDirectionEnum.DESCENDING];
}};
module$exports$eeapiclient$ee_api_client.IRuleActionEnum = function() {
};
module$exports$eeapiclient$ee_api_client.RuleActionEnum = {ALLOW:"ALLOW", ALLOW_WITH_LOG:"ALLOW_WITH_LOG", DENY:"DENY", DENY_WITH_LOG:"DENY_WITH_LOG", LOG:"LOG", NO_ACTION:"NO_ACTION", values:function() {
  return [module$exports$eeapiclient$ee_api_client.RuleActionEnum.NO_ACTION, module$exports$eeapiclient$ee_api_client.RuleActionEnum.ALLOW, module$exports$eeapiclient$ee_api_client.RuleActionEnum.ALLOW_WITH_LOG, module$exports$eeapiclient$ee_api_client.RuleActionEnum.DENY, module$exports$eeapiclient$ee_api_client.RuleActionEnum.DENY_WITH_LOG, 
  module$exports$eeapiclient$ee_api_client.RuleActionEnum.LOG];
}};
module$exports$eeapiclient$ee_api_client.IScheduledUpdateSubscriptionUpdateTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum = {BASIC:"BASIC", NO_SUBSCRIPTION:"NO_SUBSCRIPTION", PREMIUM:"PREMIUM", PROFESSIONAL:"PROFESSIONAL", TYPE_UNSPECIFIED:"TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum.TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum.NO_SUBSCRIPTION, module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum.BASIC, module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum.PROFESSIONAL, 
  module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum.PREMIUM];
}};
module$exports$eeapiclient$ee_api_client.IScheduledUpdateUpdateChangeTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum = {CHANGE_TIME_TYPE_UNSPECIFIED:"CHANGE_TIME_TYPE_UNSPECIFIED", EARLIEST_POSSIBLE:"EARLIEST_POSSIBLE", END_OF_PERIOD:"END_OF_PERIOD", END_OF_TERM:"END_OF_TERM", SPECIFIC_DATE:"SPECIFIC_DATE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum.CHANGE_TIME_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum.END_OF_PERIOD, module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum.EARLIEST_POSSIBLE, module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum.SPECIFIC_DATE, 
  module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum.END_OF_TERM];
}};
module$exports$eeapiclient$ee_api_client.ISubscriptionStateEnum = function() {
};
module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum = {ACTIVE:"ACTIVE", COMPLETED:"COMPLETED", ERROR:"ERROR", INACTIVE:"INACTIVE", STATE_UNSPECIFIED:"STATE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum.STATE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum.INACTIVE, module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum.ACTIVE, module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum.COMPLETED, module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum.ERROR];
}};
module$exports$eeapiclient$ee_api_client.ISubscriptionTrialStateEnum = function() {
};
module$exports$eeapiclient$ee_api_client.SubscriptionTrialStateEnum = {ACTIVE:"ACTIVE", EXPIRED:"EXPIRED", STATE_UNSPECIFIED:"STATE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.SubscriptionTrialStateEnum.STATE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.SubscriptionTrialStateEnum.ACTIVE, module$exports$eeapiclient$ee_api_client.SubscriptionTrialStateEnum.EXPIRED];
}};
module$exports$eeapiclient$ee_api_client.ISubscriptionTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum = {BASIC:"BASIC", NO_SUBSCRIPTION:"NO_SUBSCRIPTION", PREMIUM:"PREMIUM", PROFESSIONAL:"PROFESSIONAL", TYPE_UNSPECIFIED:"TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum.TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum.NO_SUBSCRIPTION, module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum.BASIC, module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum.PROFESSIONAL, module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum.PREMIUM];
}};
module$exports$eeapiclient$ee_api_client.ITableFileExportOptionsFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum = {CSV:"CSV", GEO_JSON:"GEO_JSON", KML:"KML", KMZ:"KMZ", SHP:"SHP", TABLE_FILE_FORMAT_UNSPECIFIED:"TABLE_FILE_FORMAT_UNSPECIFIED", TF_RECORD_TABLE:"TF_RECORD_TABLE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum.TABLE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum.CSV, module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum.GEO_JSON, module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum.KML, 
  module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum.KMZ, module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum.SHP, module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum.TF_RECORD_TABLE];
}};
module$exports$eeapiclient$ee_api_client.ITableFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TableFileFormatEnum = {CSV:"CSV", GEO_JSON:"GEO_JSON", KML:"KML", KMZ:"KMZ", SHP:"SHP", TABLE_FILE_FORMAT_UNSPECIFIED:"TABLE_FILE_FORMAT_UNSPECIFIED", TF_RECORD_TABLE:"TF_RECORD_TABLE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TableFileFormatEnum.TABLE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TableFileFormatEnum.CSV, module$exports$eeapiclient$ee_api_client.TableFileFormatEnum.GEO_JSON, module$exports$eeapiclient$ee_api_client.TableFileFormatEnum.KML, module$exports$eeapiclient$ee_api_client.TableFileFormatEnum.KMZ, 
  module$exports$eeapiclient$ee_api_client.TableFileFormatEnum.SHP, module$exports$eeapiclient$ee_api_client.TableFileFormatEnum.TF_RECORD_TABLE];
}};
module$exports$eeapiclient$ee_api_client.ITableManifestColumnDataTypeOverridesEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TableManifestColumnDataTypeOverridesEnum = {COLUMN_DATA_TYPE_LONG:"COLUMN_DATA_TYPE_LONG", COLUMN_DATA_TYPE_NUMERIC:"COLUMN_DATA_TYPE_NUMERIC", COLUMN_DATA_TYPE_STRING:"COLUMN_DATA_TYPE_STRING", COLUMN_DATA_TYPE_UNSPECIFIED:"COLUMN_DATA_TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TableManifestColumnDataTypeOverridesEnum.COLUMN_DATA_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TableManifestColumnDataTypeOverridesEnum.COLUMN_DATA_TYPE_STRING, module$exports$eeapiclient$ee_api_client.TableManifestColumnDataTypeOverridesEnum.COLUMN_DATA_TYPE_NUMERIC, module$exports$eeapiclient$ee_api_client.TableManifestColumnDataTypeOverridesEnum.COLUMN_DATA_TYPE_LONG];
}};
module$exports$eeapiclient$ee_api_client.ITableManifestCsvColumnDataTypeOverridesEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TableManifestCsvColumnDataTypeOverridesEnum = {CSV_COLUMN_DATA_TYPE_LONG:"CSV_COLUMN_DATA_TYPE_LONG", CSV_COLUMN_DATA_TYPE_NUMERIC:"CSV_COLUMN_DATA_TYPE_NUMERIC", CSV_COLUMN_DATA_TYPE_STRING:"CSV_COLUMN_DATA_TYPE_STRING", CSV_COLUMN_DATA_TYPE_UNSPECIFIED:"CSV_COLUMN_DATA_TYPE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TableManifestCsvColumnDataTypeOverridesEnum.CSV_COLUMN_DATA_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TableManifestCsvColumnDataTypeOverridesEnum.CSV_COLUMN_DATA_TYPE_STRING, module$exports$eeapiclient$ee_api_client.TableManifestCsvColumnDataTypeOverridesEnum.CSV_COLUMN_DATA_TYPE_NUMERIC, module$exports$eeapiclient$ee_api_client.TableManifestCsvColumnDataTypeOverridesEnum.CSV_COLUMN_DATA_TYPE_LONG];
}};
module$exports$eeapiclient$ee_api_client.ITerminateSubscriptionRequestTerminationTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum = {CHANGE_TIME_TYPE_UNSPECIFIED:"CHANGE_TIME_TYPE_UNSPECIFIED", EARLIEST_POSSIBLE:"EARLIEST_POSSIBLE", END_OF_PERIOD:"END_OF_PERIOD", END_OF_TERM:"END_OF_TERM", SPECIFIC_DATE:"SPECIFIC_DATE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum.CHANGE_TIME_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum.END_OF_PERIOD, module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum.EARLIEST_POSSIBLE, module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum.SPECIFIC_DATE, 
  module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum.END_OF_TERM];
}};
module$exports$eeapiclient$ee_api_client.IThinningOptionsThinningStrategyEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ThinningOptionsThinningStrategyEnum = {GLOBALLY_CONSISTENT:"GLOBALLY_CONSISTENT", HIGHER_DENSITY:"HIGHER_DENSITY", UNKNOWN_THINNING_STRATEGY:"UNKNOWN_THINNING_STRATEGY", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ThinningOptionsThinningStrategyEnum.UNKNOWN_THINNING_STRATEGY, module$exports$eeapiclient$ee_api_client.ThinningOptionsThinningStrategyEnum.GLOBALLY_CONSISTENT, module$exports$eeapiclient$ee_api_client.ThinningOptionsThinningStrategyEnum.HIGHER_DENSITY];
}};
module$exports$eeapiclient$ee_api_client.IThumbnailFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum = {AUTO_JPEG_PNG:"AUTO_JPEG_PNG", GEO_TIFF:"GEO_TIFF", IMAGE_FILE_FORMAT_UNSPECIFIED:"IMAGE_FILE_FORMAT_UNSPECIFIED", JPEG:"JPEG", MULTI_BAND_IMAGE_TILE:"MULTI_BAND_IMAGE_TILE", NPY:"NPY", PNG:"PNG", TF_RECORD_IMAGE:"TF_RECORD_IMAGE", ZIPPED_GEO_TIFF:"ZIPPED_GEO_TIFF", ZIPPED_GEO_TIFF_PER_BAND:"ZIPPED_GEO_TIFF_PER_BAND", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.IMAGE_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.JPEG, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.PNG, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.AUTO_JPEG_PNG, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.NPY, 
  module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.GEO_TIFF, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.TF_RECORD_IMAGE, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.MULTI_BAND_IMAGE_TILE, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.ZIPPED_GEO_TIFF, module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum.ZIPPED_GEO_TIFF_PER_BAND];
}};
module$exports$eeapiclient$ee_api_client.ITilesetBandPyramidingPolicyEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum = {MAX:"MAX", MEAN:"MEAN", MEDIAN:"MEDIAN", MIN:"MIN", MODE:"MODE", PYRAMIDING_POLICY_UNSPECIFIED:"PYRAMIDING_POLICY_UNSPECIFIED", SAMPLE:"SAMPLE", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum.PYRAMIDING_POLICY_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum.MEAN, module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum.SAMPLE, module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum.MIN, 
  module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum.MAX, module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum.MODE, module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum.MEDIAN];
}};
module$exports$eeapiclient$ee_api_client.ITilesetDataTypeEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum = {DATA_TYPE_UNSPECIFIED:"DATA_TYPE_UNSPECIFIED", DOUBLE:"DOUBLE", FLOAT:"FLOAT", INT16:"INT16", INT32:"INT32", INT8:"INT8", UINT16:"UINT16", UINT32:"UINT32", UINT8:"UINT8", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.DATA_TYPE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.INT8, module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.UINT8, module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.INT16, module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.UINT16, 
  module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.INT32, module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.UINT32, module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.FLOAT, module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum.DOUBLE];
}};
module$exports$eeapiclient$ee_api_client.ITrialStatusEligibilityEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum = {ACCOUNT_INELIGIBLE:"ACCOUNT_INELIGIBLE", ALREADY_EVALUATED:"ALREADY_EVALUATED", ELIGIBILITY_UNSPECIFIED:"ELIGIBILITY_UNSPECIFIED", ELIGIBLE:"ELIGIBLE", NO_BILLING_ACCOUNT:"NO_BILLING_ACCOUNT", REDEEMED:"REDEEMED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum.ELIGIBILITY_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum.ELIGIBLE, module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum.REDEEMED, module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum.ALREADY_EVALUATED, module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum.NO_BILLING_ACCOUNT, 
  module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum.ACCOUNT_INELIGIBLE];
}};
module$exports$eeapiclient$ee_api_client.ITrialStatusStateEnum = function() {
};
module$exports$eeapiclient$ee_api_client.TrialStatusStateEnum = {ACTIVE:"ACTIVE", EXPIRED:"EXPIRED", STATE_UNSPECIFIED:"STATE_UNSPECIFIED", values:function() {
  return [module$exports$eeapiclient$ee_api_client.TrialStatusStateEnum.STATE_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.TrialStatusStateEnum.ACTIVE, module$exports$eeapiclient$ee_api_client.TrialStatusStateEnum.EXPIRED];
}};
module$exports$eeapiclient$ee_api_client.IVideoFileExportOptionsFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsFileFormatEnum = {GIF:"GIF", MP4:"MP4", VIDEO_FILE_FORMAT_UNSPECIFIED:"VIDEO_FILE_FORMAT_UNSPECIFIED", VP9:"VP9", values:function() {
  return [module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsFileFormatEnum.VIDEO_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsFileFormatEnum.MP4, module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsFileFormatEnum.GIF, module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsFileFormatEnum.VP9];
}};
module$exports$eeapiclient$ee_api_client.IVideoThumbnailFileFormatEnum = function() {
};
module$exports$eeapiclient$ee_api_client.VideoThumbnailFileFormatEnum = {GIF:"GIF", MP4:"MP4", VIDEO_FILE_FORMAT_UNSPECIFIED:"VIDEO_FILE_FORMAT_UNSPECIFIED", VP9:"VP9", values:function() {
  return [module$exports$eeapiclient$ee_api_client.VideoThumbnailFileFormatEnum.VIDEO_FILE_FORMAT_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.VideoThumbnailFileFormatEnum.MP4, module$exports$eeapiclient$ee_api_client.VideoThumbnailFileFormatEnum.GIF, module$exports$eeapiclient$ee_api_client.VideoThumbnailFileFormatEnum.VP9];
}};
module$exports$eeapiclient$ee_api_client.AffineTransformParameters = function() {
};
module$exports$eeapiclient$ee_api_client.AffineTransform = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("scaleX", null == parameters.scaleX ? null : parameters.scaleX);
  this.Serializable$set("shearX", null == parameters.shearX ? null : parameters.shearX);
  this.Serializable$set("translateX", null == parameters.translateX ? null : parameters.translateX);
  this.Serializable$set("shearY", null == parameters.shearY ? null : parameters.shearY);
  this.Serializable$set("scaleY", null == parameters.scaleY ? null : parameters.scaleY);
  this.Serializable$set("translateY", null == parameters.translateY ? null : parameters.translateY);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.AffineTransform, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.AffineTransform.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.AffineTransform;
};
module$exports$eeapiclient$ee_api_client.AffineTransform.prototype.getPartialClassMetadata = function() {
  return {keys:"scaleX scaleY shearX shearY translateX translateY".split(" ")};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.AffineTransform.prototype, {scaleX:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("scaleX") ? this.Serializable$get("scaleX") : null;
}, set:function(value) {
  this.Serializable$set("scaleX", value);
}}, scaleY:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("scaleY") ? this.Serializable$get("scaleY") : null;
}, set:function(value) {
  this.Serializable$set("scaleY", value);
}}, shearX:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("shearX") ? this.Serializable$get("shearX") : null;
}, set:function(value) {
  this.Serializable$set("shearX", value);
}}, shearY:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("shearY") ? this.Serializable$get("shearY") : null;
}, set:function(value) {
  this.Serializable$set("shearY", value);
}}, translateX:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("translateX") ? this.Serializable$get("translateX") : null;
}, set:function(value) {
  this.Serializable$set("translateX", value);
}}, translateY:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("translateY") ? this.Serializable$get("translateY") : null;
}, set:function(value) {
  this.Serializable$set("translateY", value);
}}});
module$exports$eeapiclient$ee_api_client.AlgorithmParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Algorithm = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("returnType", null == parameters.returnType ? null : parameters.returnType);
  this.Serializable$set("arguments", null == parameters.arguments ? null : parameters.arguments);
  this.Serializable$set("deprecated", null == parameters.deprecated ? null : parameters.deprecated);
  this.Serializable$set("deprecationReason", null == parameters.deprecationReason ? null : parameters.deprecationReason);
  this.Serializable$set("hidden", null == parameters.hidden ? null : parameters.hidden);
  this.Serializable$set("preview", null == parameters.preview ? null : parameters.preview);
  this.Serializable$set("sourceCodeUri", null == parameters.sourceCodeUri ? null : parameters.sourceCodeUri);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Algorithm, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Algorithm.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Algorithm;
};
module$exports$eeapiclient$ee_api_client.Algorithm.prototype.getPartialClassMetadata = function() {
  return {arrays:{arguments:module$exports$eeapiclient$ee_api_client.AlgorithmArgument}, keys:"arguments deprecated deprecationReason description hidden name preview returnType sourceCodeUri".split(" ")};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Algorithm.prototype, {arguments:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("arguments") ? this.Serializable$get("arguments") : null;
}, set:function(value) {
  this.Serializable$set("arguments", value);
}}, deprecated:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("deprecated") ? this.Serializable$get("deprecated") : null;
}, set:function(value) {
  this.Serializable$set("deprecated", value);
}}, deprecationReason:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("deprecationReason") ? this.Serializable$get("deprecationReason") : null;
}, set:function(value) {
  this.Serializable$set("deprecationReason", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, hidden:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("hidden") ? this.Serializable$get("hidden") : null;
}, set:function(value) {
  this.Serializable$set("hidden", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, preview:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("preview") ? this.Serializable$get("preview") : null;
}, set:function(value) {
  this.Serializable$set("preview", value);
}}, returnType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("returnType") ? this.Serializable$get("returnType") : null;
}, set:function(value) {
  this.Serializable$set("returnType", value);
}}, sourceCodeUri:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sourceCodeUri") ? this.Serializable$get("sourceCodeUri") : null;
}, set:function(value) {
  this.Serializable$set("sourceCodeUri", value);
}}});
module$exports$eeapiclient$ee_api_client.AlgorithmArgumentParameters = function() {
};
module$exports$eeapiclient$ee_api_client.AlgorithmArgument = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("argumentName", null == parameters.argumentName ? null : parameters.argumentName);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("optional", null == parameters.optional ? null : parameters.optional);
  this.Serializable$set("defaultValue", null == parameters.defaultValue ? null : parameters.defaultValue);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.AlgorithmArgument, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.AlgorithmArgument.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.AlgorithmArgument;
};
module$exports$eeapiclient$ee_api_client.AlgorithmArgument.prototype.getPartialClassMetadata = function() {
  return {keys:["argumentName", "defaultValue", "description", "optional", "type"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.AlgorithmArgument.prototype, {argumentName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("argumentName") ? this.Serializable$get("argumentName") : null;
}, set:function(value) {
  this.Serializable$set("argumentName", value);
}}, defaultValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("defaultValue") ? this.Serializable$get("defaultValue") : null;
}, set:function(value) {
  this.Serializable$set("defaultValue", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, optional:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("optional") ? this.Serializable$get("optional") : null;
}, set:function(value) {
  this.Serializable$set("optional", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}});
module$exports$eeapiclient$ee_api_client.AppealRestrictionRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.AppealRestrictionRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.AppealRestrictionRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.AppealRestrictionRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.AppealRestrictionRequest;
};
module$exports$eeapiclient$ee_api_client.AppealRestrictionRequest.prototype.getPartialClassMetadata = function() {
  return {keys:[]};
};
module$exports$eeapiclient$ee_api_client.ArrayValueParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ArrayValue = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("values", null == parameters.values ? null : parameters.values);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ArrayValue, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ArrayValue.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ArrayValue;
};
module$exports$eeapiclient$ee_api_client.ArrayValue.prototype.getPartialClassMetadata = function() {
  return {arrays:{values:module$exports$eeapiclient$ee_api_client.ValueNode}, keys:["values"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ArrayValue.prototype, {values:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("values") ? this.Serializable$get("values") : null;
}, set:function(value) {
  this.Serializable$set("values", value);
}}});
module$exports$eeapiclient$ee_api_client.AuditConfigParameters = function() {
};
module$exports$eeapiclient$ee_api_client.AuditConfig = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("service", null == parameters.service ? null : parameters.service);
  this.Serializable$set("auditLogConfigs", null == parameters.auditLogConfigs ? null : parameters.auditLogConfigs);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.AuditConfig, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.AuditConfig.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.AuditConfig;
};
module$exports$eeapiclient$ee_api_client.AuditConfig.prototype.getPartialClassMetadata = function() {
  return {arrays:{auditLogConfigs:module$exports$eeapiclient$ee_api_client.AuditLogConfig}, keys:["auditLogConfigs", "service"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.AuditConfig.prototype, {auditLogConfigs:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("auditLogConfigs") ? this.Serializable$get("auditLogConfigs") : null;
}, set:function(value) {
  this.Serializable$set("auditLogConfigs", value);
}}, service:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("service") ? this.Serializable$get("service") : null;
}, set:function(value) {
  this.Serializable$set("service", value);
}}});
module$exports$eeapiclient$ee_api_client.AuditLogConfigParameters = function() {
};
module$exports$eeapiclient$ee_api_client.AuditLogConfig = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("logType", null == parameters.logType ? null : parameters.logType);
  this.Serializable$set("exemptedMembers", null == parameters.exemptedMembers ? null : parameters.exemptedMembers);
  this.Serializable$set("ignoreChildExemptions", null == parameters.ignoreChildExemptions ? null : parameters.ignoreChildExemptions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.AuditLogConfig, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.AuditLogConfig.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.AuditLogConfig;
};
module$exports$eeapiclient$ee_api_client.AuditLogConfig.prototype.getPartialClassMetadata = function() {
  return {enums:{logType:module$exports$eeapiclient$ee_api_client.AuditLogConfigLogTypeEnum}, keys:["exemptedMembers", "ignoreChildExemptions", "logType"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.AuditLogConfig.prototype, {exemptedMembers:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("exemptedMembers") ? this.Serializable$get("exemptedMembers") : null;
}, set:function(value) {
  this.Serializable$set("exemptedMembers", value);
}}, ignoreChildExemptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("ignoreChildExemptions") ? this.Serializable$get("ignoreChildExemptions") : null;
}, set:function(value) {
  this.Serializable$set("ignoreChildExemptions", value);
}}, logType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("logType") ? this.Serializable$get("logType") : null;
}, set:function(value) {
  this.Serializable$set("logType", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.AuditLogConfig, {LogType:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.AuditLogConfigLogTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("permissionType", null == parameters.permissionType ? null : parameters.permissionType);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions;
};
module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{permissionType:module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum}, keys:["permissionType"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions.prototype, {permissionType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("permissionType") ? this.Serializable$get("permissionType") : null;
}, set:function(value) {
  this.Serializable$set("permissionType", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions, {PermissionType:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptionsPermissionTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.BigQueryDestinationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.BigQueryDestination = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("table", null == parameters.table ? null : parameters.table);
  this.Serializable$set("overwrite", null == parameters.overwrite ? null : parameters.overwrite);
  this.Serializable$set("append", null == parameters.append ? null : parameters.append);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.BigQueryDestination, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.BigQueryDestination.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.BigQueryDestination;
};
module$exports$eeapiclient$ee_api_client.BigQueryDestination.prototype.getPartialClassMetadata = function() {
  return {keys:["append", "overwrite", "table"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.BigQueryDestination.prototype, {append:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("append") ? this.Serializable$get("append") : null;
}, set:function(value) {
  this.Serializable$set("append", value);
}}, overwrite:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("overwrite") ? this.Serializable$get("overwrite") : null;
}, set:function(value) {
  this.Serializable$set("overwrite", value);
}}, table:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("table") ? this.Serializable$get("table") : null;
}, set:function(value) {
  this.Serializable$set("table", value);
}}});
module$exports$eeapiclient$ee_api_client.BigQueryExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.BigQueryExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("bigqueryDestination", null == parameters.bigqueryDestination ? null : parameters.bigqueryDestination);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.BigQueryExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.BigQueryExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.BigQueryExportOptions;
};
module$exports$eeapiclient$ee_api_client.BigQueryExportOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["bigqueryDestination"], objects:{bigqueryDestination:module$exports$eeapiclient$ee_api_client.BigQueryDestination}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.BigQueryExportOptions.prototype, {bigqueryDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bigqueryDestination") ? this.Serializable$get("bigqueryDestination") : null;
}, set:function(value) {
  this.Serializable$set("bigqueryDestination", value);
}}});
module$exports$eeapiclient$ee_api_client.BindingParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Binding = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("role", null == parameters.role ? null : parameters.role);
  this.Serializable$set("members", null == parameters.members ? null : parameters.members);
  this.Serializable$set("condition", null == parameters.condition ? null : parameters.condition);
  this.Serializable$set("bindingId", null == parameters.bindingId ? null : parameters.bindingId);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Binding, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Binding.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Binding;
};
module$exports$eeapiclient$ee_api_client.Binding.prototype.getPartialClassMetadata = function() {
  return {keys:["bindingId", "condition", "members", "role"], objects:{condition:module$exports$eeapiclient$ee_api_client.Expr}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Binding.prototype, {bindingId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bindingId") ? this.Serializable$get("bindingId") : null;
}, set:function(value) {
  this.Serializable$set("bindingId", value);
}}, condition:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("condition") ? this.Serializable$get("condition") : null;
}, set:function(value) {
  this.Serializable$set("condition", value);
}}, members:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("members") ? this.Serializable$get("members") : null;
}, set:function(value) {
  this.Serializable$set("members", value);
}}, role:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("role") ? this.Serializable$get("role") : null;
}, set:function(value) {
  this.Serializable$set("role", value);
}}});
module$exports$eeapiclient$ee_api_client.CancelOperationRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.CancelOperationRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.CancelOperationRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.CancelOperationRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.CancelOperationRequest;
};
module$exports$eeapiclient$ee_api_client.CancelOperationRequest.prototype.getPartialClassMetadata = function() {
  return {keys:[]};
};
module$exports$eeapiclient$ee_api_client.CapabilitiesParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Capabilities = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("capabilities", null == parameters.capabilities ? null : parameters.capabilities);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Capabilities, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Capabilities.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Capabilities;
};
module$exports$eeapiclient$ee_api_client.Capabilities.prototype.getPartialClassMetadata = function() {
  return {enums:{capabilities:module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum}, keys:["capabilities"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Capabilities.prototype, {capabilities:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("capabilities") ? this.Serializable$get("capabilities") : null;
}, set:function(value) {
  this.Serializable$set("capabilities", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Capabilities, {Capabilities:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.CapabilitiesCapabilitiesEnum;
}}});
module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("changeTime", null == parameters.changeTime ? null : parameters.changeTime);
  this.Serializable$set("etag", null == parameters.etag ? null : parameters.etag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequest;
};
module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequest.prototype.getPartialClassMetadata = function() {
  return {enums:{changeTime:module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum, type:module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum}, keys:["changeTime", "etag", "type"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequest.prototype, {changeTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("changeTime") ? this.Serializable$get("changeTime") : null;
}, set:function(value) {
  this.Serializable$set("changeTime", value);
}}, etag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("etag") ? this.Serializable$get("etag") : null;
}, set:function(value) {
  this.Serializable$set("etag", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequest, {ChangeTime:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestChangeTimeEnum;
}}, Type:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ChangeSubscriptionTypeRequestTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("earthEngineDestination", null == parameters.earthEngineDestination ? null : parameters.earthEngineDestination);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions;
};
module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["earthEngineDestination"], objects:{earthEngineDestination:module$exports$eeapiclient$ee_api_client.EarthEngineDestination}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions.prototype, {earthEngineDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("earthEngineDestination") ? this.Serializable$get("earthEngineDestination") : null;
}, set:function(value) {
  this.Serializable$set("earthEngineDestination", value);
}}});
module$exports$eeapiclient$ee_api_client.CloudAuditOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.CloudAuditOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("logName", null == parameters.logName ? null : parameters.logName);
  this.Serializable$set("authorizationLoggingOptions", null == parameters.authorizationLoggingOptions ? null : parameters.authorizationLoggingOptions);
  this.Serializable$set("permissionType", null == parameters.permissionType ? null : parameters.permissionType);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.CloudAuditOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.CloudAuditOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.CloudAuditOptions;
};
module$exports$eeapiclient$ee_api_client.CloudAuditOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{logName:module$exports$eeapiclient$ee_api_client.CloudAuditOptionsLogNameEnum, permissionType:module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum}, keys:["authorizationLoggingOptions", "logName", "permissionType"], objects:{authorizationLoggingOptions:module$exports$eeapiclient$ee_api_client.AuthorizationLoggingOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CloudAuditOptions.prototype, {authorizationLoggingOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("authorizationLoggingOptions") ? this.Serializable$get("authorizationLoggingOptions") : null;
}, set:function(value) {
  this.Serializable$set("authorizationLoggingOptions", value);
}}, logName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("logName") ? this.Serializable$get("logName") : null;
}, set:function(value) {
  this.Serializable$set("logName", value);
}}, permissionType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("permissionType") ? this.Serializable$get("permissionType") : null;
}, set:function(value) {
  this.Serializable$set("permissionType", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CloudAuditOptions, {LogName:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.CloudAuditOptionsLogNameEnum;
}}, PermissionType:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.CloudAuditOptionsPermissionTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.CloudStorageDestinationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.CloudStorageDestination = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("bucket", null == parameters.bucket ? null : parameters.bucket);
  this.Serializable$set("filenamePrefix", null == parameters.filenamePrefix ? null : parameters.filenamePrefix);
  this.Serializable$set("permissions", null == parameters.permissions ? null : parameters.permissions);
  this.Serializable$set("bucketCorsUris", null == parameters.bucketCorsUris ? null : parameters.bucketCorsUris);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.CloudStorageDestination, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.CloudStorageDestination.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.CloudStorageDestination;
};
module$exports$eeapiclient$ee_api_client.CloudStorageDestination.prototype.getPartialClassMetadata = function() {
  return {enums:{permissions:module$exports$eeapiclient$ee_api_client.CloudStorageDestinationPermissionsEnum}, keys:["bucket", "bucketCorsUris", "filenamePrefix", "permissions"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CloudStorageDestination.prototype, {bucket:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bucket") ? this.Serializable$get("bucket") : null;
}, set:function(value) {
  this.Serializable$set("bucket", value);
}}, bucketCorsUris:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bucketCorsUris") ? this.Serializable$get("bucketCorsUris") : null;
}, set:function(value) {
  this.Serializable$set("bucketCorsUris", value);
}}, filenamePrefix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("filenamePrefix") ? this.Serializable$get("filenamePrefix") : null;
}, set:function(value) {
  this.Serializable$set("filenamePrefix", value);
}}, permissions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("permissions") ? this.Serializable$get("permissions") : null;
}, set:function(value) {
  this.Serializable$set("permissions", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CloudStorageDestination, {Permissions:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.CloudStorageDestinationPermissionsEnum;
}}});
module$exports$eeapiclient$ee_api_client.CloudStorageLocationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.CloudStorageLocation = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("uris", null == parameters.uris ? null : parameters.uris);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.CloudStorageLocation, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.CloudStorageLocation.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.CloudStorageLocation;
};
module$exports$eeapiclient$ee_api_client.CloudStorageLocation.prototype.getPartialClassMetadata = function() {
  return {keys:["uris"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CloudStorageLocation.prototype, {uris:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("uris") ? this.Serializable$get("uris") : null;
}, set:function(value) {
  this.Serializable$set("uris", value);
}}});
module$exports$eeapiclient$ee_api_client.ComputeFeaturesRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ComputeFeaturesRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("pageSize", null == parameters.pageSize ? null : parameters.pageSize);
  this.Serializable$set("pageToken", null == parameters.pageToken ? null : parameters.pageToken);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ComputeFeaturesRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ComputeFeaturesRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ComputeFeaturesRequest;
};
module$exports$eeapiclient$ee_api_client.ComputeFeaturesRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["expression", "pageSize", "pageToken", "workloadTag"], objects:{expression:module$exports$eeapiclient$ee_api_client.Expression}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputeFeaturesRequest.prototype, {expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, pageSize:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pageSize") ? this.Serializable$get("pageSize") : null;
}, set:function(value) {
  this.Serializable$set("pageSize", value);
}}, pageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pageToken") ? this.Serializable$get("pageToken") : null;
}, set:function(value) {
  this.Serializable$set("pageToken", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("features", null == parameters.features ? null : parameters.features);
  this.Serializable$set("nextPageToken", null == parameters.nextPageToken ? null : parameters.nextPageToken);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponse;
};
module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponse.prototype.getPartialClassMetadata = function() {
  return {arrays:{features:module$exports$eeapiclient$ee_api_client.Feature}, keys:["features", "nextPageToken", "type"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponse.prototype, {features:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("features") ? this.Serializable$get("features") : null;
}, set:function(value) {
  this.Serializable$set("features", value);
}}, nextPageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("nextPageToken") ? this.Serializable$get("nextPageToken") : null;
}, set:function(value) {
  this.Serializable$set("nextPageToken", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}});
module$exports$eeapiclient$ee_api_client.ComputeImagesRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ComputeImagesRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("pageSize", null == parameters.pageSize ? null : parameters.pageSize);
  this.Serializable$set("pageToken", null == parameters.pageToken ? null : parameters.pageToken);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ComputeImagesRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ComputeImagesRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ComputeImagesRequest;
};
module$exports$eeapiclient$ee_api_client.ComputeImagesRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["expression", "pageSize", "pageToken", "workloadTag"], objects:{expression:module$exports$eeapiclient$ee_api_client.Expression}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputeImagesRequest.prototype, {expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, pageSize:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pageSize") ? this.Serializable$get("pageSize") : null;
}, set:function(value) {
  this.Serializable$set("pageSize", value);
}}, pageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pageToken") ? this.Serializable$get("pageToken") : null;
}, set:function(value) {
  this.Serializable$set("pageToken", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ComputeImagesResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ComputeImagesResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("images", null == parameters.images ? null : parameters.images);
  this.Serializable$set("nextPageToken", null == parameters.nextPageToken ? null : parameters.nextPageToken);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ComputeImagesResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ComputeImagesResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ComputeImagesResponse;
};
module$exports$eeapiclient$ee_api_client.ComputeImagesResponse.prototype.getPartialClassMetadata = function() {
  return {arrays:{images:module$exports$eeapiclient$ee_api_client.EarthEngineAsset}, keys:["images", "nextPageToken"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputeImagesResponse.prototype, {images:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("images") ? this.Serializable$get("images") : null;
}, set:function(value) {
  this.Serializable$set("images", value);
}}, nextPageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("nextPageToken") ? this.Serializable$get("nextPageToken") : null;
}, set:function(value) {
  this.Serializable$set("nextPageToken", value);
}}});
module$exports$eeapiclient$ee_api_client.ComputePixelsRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ComputePixelsRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
  this.Serializable$set("grid", null == parameters.grid ? null : parameters.grid);
  this.Serializable$set("bandIds", null == parameters.bandIds ? null : parameters.bandIds);
  this.Serializable$set("visualizationOptions", null == parameters.visualizationOptions ? null : parameters.visualizationOptions);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ComputePixelsRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ComputePixelsRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ComputePixelsRequest;
};
module$exports$eeapiclient$ee_api_client.ComputePixelsRequest.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum}, keys:"bandIds expression fileFormat grid visualizationOptions workloadTag".split(" "), objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, grid:module$exports$eeapiclient$ee_api_client.PixelGrid, visualizationOptions:module$exports$eeapiclient$ee_api_client.VisualizationOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputePixelsRequest.prototype, {bandIds:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bandIds") ? this.Serializable$get("bandIds") : null;
}, set:function(value) {
  this.Serializable$set("bandIds", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, grid:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("grid") ? this.Serializable$get("grid") : null;
}, set:function(value) {
  this.Serializable$set("grid", value);
}}, visualizationOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("visualizationOptions") ? this.Serializable$get("visualizationOptions") : null;
}, set:function(value) {
  this.Serializable$set("visualizationOptions", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputePixelsRequest, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ComputePixelsRequestFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.ComputeValueRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ComputeValueRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ComputeValueRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ComputeValueRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ComputeValueRequest;
};
module$exports$eeapiclient$ee_api_client.ComputeValueRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["expression", "workloadTag"], objects:{expression:module$exports$eeapiclient$ee_api_client.Expression}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputeValueRequest.prototype, {expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ComputeValueResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ComputeValueResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("result", null == parameters.result ? null : parameters.result);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ComputeValueResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ComputeValueResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ComputeValueResponse;
};
module$exports$eeapiclient$ee_api_client.ComputeValueResponse.prototype.getPartialClassMetadata = function() {
  return {keys:["result"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ComputeValueResponse.prototype, {result:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("result") ? this.Serializable$get("result") : null;
}, set:function(value) {
  this.Serializable$set("result", value);
}}});
module$exports$eeapiclient$ee_api_client.ConditionParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Condition = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("iam", null == parameters.iam ? null : parameters.iam);
  this.Serializable$set("sys", null == parameters.sys ? null : parameters.sys);
  this.Serializable$set("svc", null == parameters.svc ? null : parameters.svc);
  this.Serializable$set("op", null == parameters.op ? null : parameters.op);
  this.Serializable$set("values", null == parameters.values ? null : parameters.values);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Condition, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Condition.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Condition;
};
module$exports$eeapiclient$ee_api_client.Condition.prototype.getPartialClassMetadata = function() {
  return {enums:{iam:module$exports$eeapiclient$ee_api_client.ConditionIamEnum, op:module$exports$eeapiclient$ee_api_client.ConditionOpEnum, sys:module$exports$eeapiclient$ee_api_client.ConditionSysEnum}, keys:["iam", "op", "svc", "sys", "values"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Condition.prototype, {iam:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("iam") ? this.Serializable$get("iam") : null;
}, set:function(value) {
  this.Serializable$set("iam", value);
}}, op:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("op") ? this.Serializable$get("op") : null;
}, set:function(value) {
  this.Serializable$set("op", value);
}}, svc:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("svc") ? this.Serializable$get("svc") : null;
}, set:function(value) {
  this.Serializable$set("svc", value);
}}, sys:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sys") ? this.Serializable$get("sys") : null;
}, set:function(value) {
  this.Serializable$set("sys", value);
}}, values:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("values") ? this.Serializable$get("values") : null;
}, set:function(value) {
  this.Serializable$set("values", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Condition, {Iam:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ConditionIamEnum;
}}, Op:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ConditionOpEnum;
}}, Sys:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ConditionSysEnum;
}}});
module$exports$eeapiclient$ee_api_client.CopyAssetRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.CopyAssetRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("destinationName", null == parameters.destinationName ? null : parameters.destinationName);
  this.Serializable$set("overwrite", null == parameters.overwrite ? null : parameters.overwrite);
  this.Serializable$set("bandIds", null == parameters.bandIds ? null : parameters.bandIds);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.CopyAssetRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.CopyAssetRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.CopyAssetRequest;
};
module$exports$eeapiclient$ee_api_client.CopyAssetRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["bandIds", "destinationName", "overwrite"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CopyAssetRequest.prototype, {bandIds:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bandIds") ? this.Serializable$get("bandIds") : null;
}, set:function(value) {
  this.Serializable$set("bandIds", value);
}}, destinationName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("destinationName") ? this.Serializable$get("destinationName") : null;
}, set:function(value) {
  this.Serializable$set("destinationName", value);
}}, overwrite:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("overwrite") ? this.Serializable$get("overwrite") : null;
}, set:function(value) {
  this.Serializable$set("overwrite", value);
}}});
module$exports$eeapiclient$ee_api_client.CounterOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.CounterOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("metric", null == parameters.metric ? null : parameters.metric);
  this.Serializable$set("field", null == parameters.field ? null : parameters.field);
  this.Serializable$set("customFields", null == parameters.customFields ? null : parameters.customFields);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.CounterOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.CounterOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.CounterOptions;
};
module$exports$eeapiclient$ee_api_client.CounterOptions.prototype.getPartialClassMetadata = function() {
  return {arrays:{customFields:module$exports$eeapiclient$ee_api_client.CustomField}, keys:["customFields", "field", "metric"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CounterOptions.prototype, {customFields:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("customFields") ? this.Serializable$get("customFields") : null;
}, set:function(value) {
  this.Serializable$set("customFields", value);
}}, field:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("field") ? this.Serializable$get("field") : null;
}, set:function(value) {
  this.Serializable$set("field", value);
}}, metric:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("metric") ? this.Serializable$get("metric") : null;
}, set:function(value) {
  this.Serializable$set("metric", value);
}}});
module$exports$eeapiclient$ee_api_client.CustomFieldParameters = function() {
};
module$exports$eeapiclient$ee_api_client.CustomField = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("value", null == parameters.value ? null : parameters.value);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.CustomField, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.CustomField.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.CustomField;
};
module$exports$eeapiclient$ee_api_client.CustomField.prototype.getPartialClassMetadata = function() {
  return {keys:["name", "value"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.CustomField.prototype, {name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, value:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("value") ? this.Serializable$get("value") : null;
}, set:function(value) {
  this.Serializable$set("value", value);
}}});
module$exports$eeapiclient$ee_api_client.DataAccessOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.DataAccessOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("logMode", null == parameters.logMode ? null : parameters.logMode);
  this.Serializable$set("isDirectAuth", null == parameters.isDirectAuth ? null : parameters.isDirectAuth);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.DataAccessOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.DataAccessOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.DataAccessOptions;
};
module$exports$eeapiclient$ee_api_client.DataAccessOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{logMode:module$exports$eeapiclient$ee_api_client.DataAccessOptionsLogModeEnum}, keys:["isDirectAuth", "logMode"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.DataAccessOptions.prototype, {isDirectAuth:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("isDirectAuth") ? this.Serializable$get("isDirectAuth") : null;
}, set:function(value) {
  this.Serializable$set("isDirectAuth", value);
}}, logMode:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("logMode") ? this.Serializable$get("logMode") : null;
}, set:function(value) {
  this.Serializable$set("logMode", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.DataAccessOptions, {LogMode:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.DataAccessOptionsLogModeEnum;
}}});
module$exports$eeapiclient$ee_api_client.DictionaryValueParameters = function() {
};
module$exports$eeapiclient$ee_api_client.DictionaryValue = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("values", null == parameters.values ? null : parameters.values);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.DictionaryValue, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.DictionaryValue.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.DictionaryValue;
};
module$exports$eeapiclient$ee_api_client.DictionaryValue.prototype.getPartialClassMetadata = function() {
  return {keys:["values"], objectMaps:{values:{ctor:module$exports$eeapiclient$ee_api_client.ValueNode, isPropertyArray:!1, isSerializable:!0, isValueArray:!1}}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.DictionaryValue.prototype, {values:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("values") ? this.Serializable$get("values") : null;
}, set:function(value) {
  this.Serializable$set("values", value);
}}});
module$exports$eeapiclient$ee_api_client.DoubleRangeParameters = function() {
};
module$exports$eeapiclient$ee_api_client.DoubleRange = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("min", null == parameters.min ? null : parameters.min);
  this.Serializable$set("max", null == parameters.max ? null : parameters.max);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.DoubleRange, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.DoubleRange.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.DoubleRange;
};
module$exports$eeapiclient$ee_api_client.DoubleRange.prototype.getPartialClassMetadata = function() {
  return {keys:["max", "min"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.DoubleRange.prototype, {max:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("max") ? this.Serializable$get("max") : null;
}, set:function(value) {
  this.Serializable$set("max", value);
}}, min:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("min") ? this.Serializable$get("min") : null;
}, set:function(value) {
  this.Serializable$set("min", value);
}}});
module$exports$eeapiclient$ee_api_client.DriveDestinationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.DriveDestination = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("folder", null == parameters.folder ? null : parameters.folder);
  this.Serializable$set("filenamePrefix", null == parameters.filenamePrefix ? null : parameters.filenamePrefix);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.DriveDestination, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.DriveDestination.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.DriveDestination;
};
module$exports$eeapiclient$ee_api_client.DriveDestination.prototype.getPartialClassMetadata = function() {
  return {keys:["filenamePrefix", "folder"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.DriveDestination.prototype, {filenamePrefix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("filenamePrefix") ? this.Serializable$get("filenamePrefix") : null;
}, set:function(value) {
  this.Serializable$set("filenamePrefix", value);
}}, folder:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("folder") ? this.Serializable$get("folder") : null;
}, set:function(value) {
  this.Serializable$set("folder", value);
}}});
module$exports$eeapiclient$ee_api_client.EarthEngineAssetParameters = function() {
};
module$exports$eeapiclient$ee_api_client.EarthEngineAsset = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("tilestoreLocation", null == parameters.tilestoreLocation ? null : parameters.tilestoreLocation);
  this.Serializable$set("cloudStorageLocation", null == parameters.cloudStorageLocation ? null : parameters.cloudStorageLocation);
  this.Serializable$set("featureViewAssetLocation", null == parameters.featureViewAssetLocation ? null : parameters.featureViewAssetLocation);
  this.Serializable$set("tableLocation", null == parameters.tableLocation ? null : parameters.tableLocation);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("id", null == parameters.id ? null : parameters.id);
  this.Serializable$set("updateTime", null == parameters.updateTime ? null : parameters.updateTime);
  this.Serializable$set("properties", null == parameters.properties ? null : parameters.properties);
  this.Serializable$set("startTime", null == parameters.startTime ? null : parameters.startTime);
  this.Serializable$set("endTime", null == parameters.endTime ? null : parameters.endTime);
  this.Serializable$set("geometry", null == parameters.geometry ? null : parameters.geometry);
  this.Serializable$set("bands", null == parameters.bands ? null : parameters.bands);
  this.Serializable$set("sizeBytes", null == parameters.sizeBytes ? null : parameters.sizeBytes);
  this.Serializable$set("featureCount", null == parameters.featureCount ? null : parameters.featureCount);
  this.Serializable$set("quota", null == parameters.quota ? null : parameters.quota);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("tilesets", null == parameters.tilesets ? null : parameters.tilesets);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.EarthEngineAsset, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.EarthEngineAsset.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.EarthEngineAsset;
};
module$exports$eeapiclient$ee_api_client.EarthEngineAsset.prototype.getPartialClassMetadata = function() {
  return {arrays:{bands:module$exports$eeapiclient$ee_api_client.ImageBand, tilesets:module$exports$eeapiclient$ee_api_client.Tileset}, enums:{type:module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum}, keys:"bands cloudStorageLocation endTime expression featureCount featureViewAssetLocation geometry id name properties quota sizeBytes startTime tableLocation tilesets tilestoreLocation type updateTime".split(" "), 
  objectMaps:{geometry:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}, properties:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}}, objects:{cloudStorageLocation:module$exports$eeapiclient$ee_api_client.CloudStorageLocation, expression:module$exports$eeapiclient$ee_api_client.Expression, featureViewAssetLocation:module$exports$eeapiclient$ee_api_client.FeatureViewLocation, 
  quota:module$exports$eeapiclient$ee_api_client.FolderQuota, tableLocation:module$exports$eeapiclient$ee_api_client.TableLocation, tilestoreLocation:module$exports$eeapiclient$ee_api_client.TilestoreLocation}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.EarthEngineAsset.prototype, {bands:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bands") ? this.Serializable$get("bands") : null;
}, set:function(value) {
  this.Serializable$set("bands", value);
}}, cloudStorageLocation:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("cloudStorageLocation") ? this.Serializable$get("cloudStorageLocation") : null;
}, set:function(value) {
  this.Serializable$set("cloudStorageLocation", value);
}}, endTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("endTime") ? this.Serializable$get("endTime") : null;
}, set:function(value) {
  this.Serializable$set("endTime", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, featureCount:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("featureCount") ? this.Serializable$get("featureCount") : null;
}, set:function(value) {
  this.Serializable$set("featureCount", value);
}}, featureViewAssetLocation:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("featureViewAssetLocation") ? this.Serializable$get("featureViewAssetLocation") : null;
}, set:function(value) {
  this.Serializable$set("featureViewAssetLocation", value);
}}, geometry:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("geometry") ? this.Serializable$get("geometry") : null;
}, set:function(value) {
  this.Serializable$set("geometry", value);
}}, id:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("id") ? this.Serializable$get("id") : null;
}, set:function(value) {
  this.Serializable$set("id", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, properties:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("properties") ? this.Serializable$get("properties") : null;
}, set:function(value) {
  this.Serializable$set("properties", value);
}}, quota:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("quota") ? this.Serializable$get("quota") : null;
}, set:function(value) {
  this.Serializable$set("quota", value);
}}, sizeBytes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sizeBytes") ? this.Serializable$get("sizeBytes") : null;
}, set:function(value) {
  this.Serializable$set("sizeBytes", value);
}}, startTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("startTime") ? this.Serializable$get("startTime") : null;
}, set:function(value) {
  this.Serializable$set("startTime", value);
}}, tableLocation:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tableLocation") ? this.Serializable$get("tableLocation") : null;
}, set:function(value) {
  this.Serializable$set("tableLocation", value);
}}, tilesets:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesets") ? this.Serializable$get("tilesets") : null;
}, set:function(value) {
  this.Serializable$set("tilesets", value);
}}, tilestoreLocation:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilestoreLocation") ? this.Serializable$get("tilestoreLocation") : null;
}, set:function(value) {
  this.Serializable$set("tilestoreLocation", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}, updateTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("updateTime") ? this.Serializable$get("updateTime") : null;
}, set:function(value) {
  this.Serializable$set("updateTime", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.EarthEngineAsset, {Type:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.EarthEngineAssetTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.EarthEngineDestinationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.EarthEngineDestination = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("overwrite", null == parameters.overwrite ? null : parameters.overwrite);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.EarthEngineDestination, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.EarthEngineDestination.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.EarthEngineDestination;
};
module$exports$eeapiclient$ee_api_client.EarthEngineDestination.prototype.getPartialClassMetadata = function() {
  return {keys:["name", "overwrite"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.EarthEngineDestination.prototype, {name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, overwrite:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("overwrite") ? this.Serializable$get("overwrite") : null;
}, set:function(value) {
  this.Serializable$set("overwrite", value);
}}});
module$exports$eeapiclient$ee_api_client.EarthEngineMapParameters = function() {
};
module$exports$eeapiclient$ee_api_client.EarthEngineMap = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
  this.Serializable$set("bandIds", null == parameters.bandIds ? null : parameters.bandIds);
  this.Serializable$set("visualizationOptions", null == parameters.visualizationOptions ? null : parameters.visualizationOptions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.EarthEngineMap, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.EarthEngineMap.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.EarthEngineMap;
};
module$exports$eeapiclient$ee_api_client.EarthEngineMap.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum}, keys:["bandIds", "expression", "fileFormat", "name", "visualizationOptions"], objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, visualizationOptions:module$exports$eeapiclient$ee_api_client.VisualizationOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.EarthEngineMap.prototype, {bandIds:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bandIds") ? this.Serializable$get("bandIds") : null;
}, set:function(value) {
  this.Serializable$set("bandIds", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, visualizationOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("visualizationOptions") ? this.Serializable$get("visualizationOptions") : null;
}, set:function(value) {
  this.Serializable$set("visualizationOptions", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.EarthEngineMap, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.EarthEngineMapFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.EmptyParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Empty = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Empty, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Empty.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Empty;
};
module$exports$eeapiclient$ee_api_client.Empty.prototype.getPartialClassMetadata = function() {
  return {keys:[]};
};
module$exports$eeapiclient$ee_api_client.ExportClassifierRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ExportClassifierRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
  this.Serializable$set("assetExportOptions", null == parameters.assetExportOptions ? null : parameters.assetExportOptions);
  this.Serializable$set("maxWorkers", null == parameters.maxWorkers ? null : parameters.maxWorkers);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
  this.Serializable$set("priority", null == parameters.priority ? null : parameters.priority);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ExportClassifierRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ExportClassifierRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ExportClassifierRequest;
};
module$exports$eeapiclient$ee_api_client.ExportClassifierRequest.prototype.getPartialClassMetadata = function() {
  return {keys:"assetExportOptions description expression maxWorkers priority requestId workloadTag".split(" "), objects:{assetExportOptions:module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions, expression:module$exports$eeapiclient$ee_api_client.Expression}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ExportClassifierRequest.prototype, {assetExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("assetExportOptions") ? this.Serializable$get("assetExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("assetExportOptions", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, maxWorkers:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxWorkers") ? this.Serializable$get("maxWorkers") : null;
}, set:function(value) {
  this.Serializable$set("maxWorkers", value);
}}, priority:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("priority") ? this.Serializable$get("priority") : null;
}, set:function(value) {
  this.Serializable$set("priority", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ExportImageRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ExportImageRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("fileExportOptions", null == parameters.fileExportOptions ? null : parameters.fileExportOptions);
  this.Serializable$set("assetExportOptions", null == parameters.assetExportOptions ? null : parameters.assetExportOptions);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("maxPixels", null == parameters.maxPixels ? null : parameters.maxPixels);
  this.Serializable$set("grid", null == parameters.grid ? null : parameters.grid);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
  this.Serializable$set("maxWorkers", null == parameters.maxWorkers ? null : parameters.maxWorkers);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
  this.Serializable$set("priority", null == parameters.priority ? null : parameters.priority);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ExportImageRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ExportImageRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ExportImageRequest;
};
module$exports$eeapiclient$ee_api_client.ExportImageRequest.prototype.getPartialClassMetadata = function() {
  return {keys:"assetExportOptions description expression fileExportOptions grid maxPixels maxWorkers priority requestId workloadTag".split(" "), objects:{assetExportOptions:module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions, expression:module$exports$eeapiclient$ee_api_client.Expression, fileExportOptions:module$exports$eeapiclient$ee_api_client.ImageFileExportOptions, 
  grid:module$exports$eeapiclient$ee_api_client.PixelGrid}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ExportImageRequest.prototype, {assetExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("assetExportOptions") ? this.Serializable$get("assetExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("assetExportOptions", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileExportOptions") ? this.Serializable$get("fileExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("fileExportOptions", value);
}}, grid:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("grid") ? this.Serializable$get("grid") : null;
}, set:function(value) {
  this.Serializable$set("grid", value);
}}, maxPixels:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxPixels") ? this.Serializable$get("maxPixels") : null;
}, set:function(value) {
  this.Serializable$set("maxPixels", value);
}}, maxWorkers:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxWorkers") ? this.Serializable$get("maxWorkers") : null;
}, set:function(value) {
  this.Serializable$set("maxWorkers", value);
}}, priority:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("priority") ? this.Serializable$get("priority") : null;
}, set:function(value) {
  this.Serializable$set("priority", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ExportMapRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ExportMapRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("tileOptions", null == parameters.tileOptions ? null : parameters.tileOptions);
  this.Serializable$set("tileExportOptions", null == parameters.tileExportOptions ? null : parameters.tileExportOptions);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
  this.Serializable$set("maxWorkers", null == parameters.maxWorkers ? null : parameters.maxWorkers);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
  this.Serializable$set("priority", null == parameters.priority ? null : parameters.priority);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ExportMapRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ExportMapRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ExportMapRequest;
};
module$exports$eeapiclient$ee_api_client.ExportMapRequest.prototype.getPartialClassMetadata = function() {
  return {keys:"description expression maxWorkers priority requestId tileExportOptions tileOptions workloadTag".split(" "), objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, tileExportOptions:module$exports$eeapiclient$ee_api_client.ImageFileExportOptions, tileOptions:module$exports$eeapiclient$ee_api_client.TileOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ExportMapRequest.prototype, {description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, maxWorkers:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxWorkers") ? this.Serializable$get("maxWorkers") : null;
}, set:function(value) {
  this.Serializable$set("maxWorkers", value);
}}, priority:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("priority") ? this.Serializable$get("priority") : null;
}, set:function(value) {
  this.Serializable$set("priority", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}, tileExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileExportOptions") ? this.Serializable$get("tileExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("tileExportOptions", value);
}}, tileOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileOptions") ? this.Serializable$get("tileOptions") : null;
}, set:function(value) {
  this.Serializable$set("tileOptions", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ExportTableRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ExportTableRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("fileExportOptions", null == parameters.fileExportOptions ? null : parameters.fileExportOptions);
  this.Serializable$set("assetExportOptions", null == parameters.assetExportOptions ? null : parameters.assetExportOptions);
  this.Serializable$set("featureViewExportOptions", null == parameters.featureViewExportOptions ? null : parameters.featureViewExportOptions);
  this.Serializable$set("bigqueryExportOptions", null == parameters.bigqueryExportOptions ? null : parameters.bigqueryExportOptions);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("selectors", null == parameters.selectors ? null : parameters.selectors);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
  this.Serializable$set("maxErrorMeters", null == parameters.maxErrorMeters ? null : parameters.maxErrorMeters);
  this.Serializable$set("maxWorkers", null == parameters.maxWorkers ? null : parameters.maxWorkers);
  this.Serializable$set("maxVertices", null == parameters.maxVertices ? null : parameters.maxVertices);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
  this.Serializable$set("policy", null == parameters.policy ? null : parameters.policy);
  this.Serializable$set("priority", null == parameters.priority ? null : parameters.priority);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ExportTableRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ExportTableRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ExportTableRequest;
};
module$exports$eeapiclient$ee_api_client.ExportTableRequest.prototype.getPartialClassMetadata = function() {
  return {keys:"assetExportOptions bigqueryExportOptions description expression featureViewExportOptions fileExportOptions maxErrorMeters maxVertices maxWorkers policy priority requestId selectors workloadTag".split(" "), objects:{assetExportOptions:module$exports$eeapiclient$ee_api_client.TableAssetExportOptions, bigqueryExportOptions:module$exports$eeapiclient$ee_api_client.BigQueryExportOptions, expression:module$exports$eeapiclient$ee_api_client.Expression, 
  featureViewExportOptions:module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions, fileExportOptions:module$exports$eeapiclient$ee_api_client.TableFileExportOptions, policy:module$exports$eeapiclient$ee_api_client.Policy}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ExportTableRequest.prototype, {assetExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("assetExportOptions") ? this.Serializable$get("assetExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("assetExportOptions", value);
}}, bigqueryExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bigqueryExportOptions") ? this.Serializable$get("bigqueryExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("bigqueryExportOptions", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, featureViewExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("featureViewExportOptions") ? this.Serializable$get("featureViewExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("featureViewExportOptions", value);
}}, fileExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileExportOptions") ? this.Serializable$get("fileExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("fileExportOptions", value);
}}, maxErrorMeters:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxErrorMeters") ? this.Serializable$get("maxErrorMeters") : null;
}, set:function(value) {
  this.Serializable$set("maxErrorMeters", value);
}}, maxVertices:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxVertices") ? this.Serializable$get("maxVertices") : null;
}, set:function(value) {
  this.Serializable$set("maxVertices", value);
}}, maxWorkers:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxWorkers") ? this.Serializable$get("maxWorkers") : null;
}, set:function(value) {
  this.Serializable$set("maxWorkers", value);
}}, policy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("policy") ? this.Serializable$get("policy") : null;
}, set:function(value) {
  this.Serializable$set("policy", value);
}}, priority:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("priority") ? this.Serializable$get("priority") : null;
}, set:function(value) {
  this.Serializable$set("priority", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}, selectors:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("selectors") ? this.Serializable$get("selectors") : null;
}, set:function(value) {
  this.Serializable$set("selectors", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ExportVideoMapRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("videoOptions", null == parameters.videoOptions ? null : parameters.videoOptions);
  this.Serializable$set("tileOptions", null == parameters.tileOptions ? null : parameters.tileOptions);
  this.Serializable$set("tileExportOptions", null == parameters.tileExportOptions ? null : parameters.tileExportOptions);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
  this.Serializable$set("version", null == parameters.version ? null : parameters.version);
  this.Serializable$set("maxWorkers", null == parameters.maxWorkers ? null : parameters.maxWorkers);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
  this.Serializable$set("priority", null == parameters.priority ? null : parameters.priority);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest;
};
module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest.prototype.getPartialClassMetadata = function() {
  return {enums:{version:module$exports$eeapiclient$ee_api_client.ExportVideoMapRequestVersionEnum}, keys:"description expression maxWorkers priority requestId tileExportOptions tileOptions version videoOptions workloadTag".split(" "), objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, tileExportOptions:module$exports$eeapiclient$ee_api_client.VideoFileExportOptions, 
  tileOptions:module$exports$eeapiclient$ee_api_client.TileOptions, videoOptions:module$exports$eeapiclient$ee_api_client.VideoOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest.prototype, {description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, maxWorkers:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxWorkers") ? this.Serializable$get("maxWorkers") : null;
}, set:function(value) {
  this.Serializable$set("maxWorkers", value);
}}, priority:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("priority") ? this.Serializable$get("priority") : null;
}, set:function(value) {
  this.Serializable$set("priority", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}, tileExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileExportOptions") ? this.Serializable$get("tileExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("tileExportOptions", value);
}}, tileOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileOptions") ? this.Serializable$get("tileOptions") : null;
}, set:function(value) {
  this.Serializable$set("tileOptions", value);
}}, version:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("version") ? this.Serializable$get("version") : null;
}, set:function(value) {
  this.Serializable$set("version", value);
}}, videoOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("videoOptions") ? this.Serializable$get("videoOptions") : null;
}, set:function(value) {
  this.Serializable$set("videoOptions", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest, {Version:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ExportVideoMapRequestVersionEnum;
}}});
module$exports$eeapiclient$ee_api_client.ExportVideoRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ExportVideoRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("videoOptions", null == parameters.videoOptions ? null : parameters.videoOptions);
  this.Serializable$set("fileExportOptions", null == parameters.fileExportOptions ? null : parameters.fileExportOptions);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
  this.Serializable$set("maxWorkers", null == parameters.maxWorkers ? null : parameters.maxWorkers);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
  this.Serializable$set("priority", null == parameters.priority ? null : parameters.priority);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ExportVideoRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ExportVideoRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ExportVideoRequest;
};
module$exports$eeapiclient$ee_api_client.ExportVideoRequest.prototype.getPartialClassMetadata = function() {
  return {keys:"description expression fileExportOptions maxWorkers priority requestId videoOptions workloadTag".split(" "), objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, fileExportOptions:module$exports$eeapiclient$ee_api_client.VideoFileExportOptions, videoOptions:module$exports$eeapiclient$ee_api_client.VideoOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ExportVideoRequest.prototype, {description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileExportOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileExportOptions") ? this.Serializable$get("fileExportOptions") : null;
}, set:function(value) {
  this.Serializable$set("fileExportOptions", value);
}}, maxWorkers:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxWorkers") ? this.Serializable$get("maxWorkers") : null;
}, set:function(value) {
  this.Serializable$set("maxWorkers", value);
}}, priority:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("priority") ? this.Serializable$get("priority") : null;
}, set:function(value) {
  this.Serializable$set("priority", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}, videoOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("videoOptions") ? this.Serializable$get("videoOptions") : null;
}, set:function(value) {
  this.Serializable$set("videoOptions", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
module$exports$eeapiclient$ee_api_client.ExprParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Expr = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("title", null == parameters.title ? null : parameters.title);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("location", null == parameters.location ? null : parameters.location);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Expr, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Expr.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Expr;
};
module$exports$eeapiclient$ee_api_client.Expr.prototype.getPartialClassMetadata = function() {
  return {keys:["description", "expression", "location", "title"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Expr.prototype, {description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, location:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("location") ? this.Serializable$get("location") : null;
}, set:function(value) {
  this.Serializable$set("location", value);
}}, title:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("title") ? this.Serializable$get("title") : null;
}, set:function(value) {
  this.Serializable$set("title", value);
}}});
module$exports$eeapiclient$ee_api_client.ExpressionParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Expression = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("values", null == parameters.values ? null : parameters.values);
  this.Serializable$set("result", null == parameters.result ? null : parameters.result);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Expression, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Expression.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Expression;
};
module$exports$eeapiclient$ee_api_client.Expression.prototype.getPartialClassMetadata = function() {
  return {keys:["result", "values"], objectMaps:{values:{ctor:module$exports$eeapiclient$ee_api_client.ValueNode, isPropertyArray:!1, isSerializable:!0, isValueArray:!1}}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Expression.prototype, {result:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("result") ? this.Serializable$get("result") : null;
}, set:function(value) {
  this.Serializable$set("result", value);
}}, values:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("values") ? this.Serializable$get("values") : null;
}, set:function(value) {
  this.Serializable$set("values", value);
}}});
module$exports$eeapiclient$ee_api_client.FeatureParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Feature = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("geometry", null == parameters.geometry ? null : parameters.geometry);
  this.Serializable$set("properties", null == parameters.properties ? null : parameters.properties);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Feature, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Feature.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Feature;
};
module$exports$eeapiclient$ee_api_client.Feature.prototype.getPartialClassMetadata = function() {
  return {keys:["geometry", "properties", "type"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Feature.prototype, {geometry:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("geometry") ? this.Serializable$get("geometry") : null;
}, set:function(value) {
  this.Serializable$set("geometry", value);
}}, properties:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("properties") ? this.Serializable$get("properties") : null;
}, set:function(value) {
  this.Serializable$set("properties", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}});
module$exports$eeapiclient$ee_api_client.FeatureViewParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureView = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("asset", null == parameters.asset ? null : parameters.asset);
  this.Serializable$set("mapName", null == parameters.mapName ? null : parameters.mapName);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("visualizationExpression", null == parameters.visualizationExpression ? null : parameters.visualizationExpression);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FeatureView, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FeatureView.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FeatureView;
};
module$exports$eeapiclient$ee_api_client.FeatureView.prototype.getPartialClassMetadata = function() {
  return {keys:["asset", "mapName", "name", "visualizationExpression"], objects:{visualizationExpression:module$exports$eeapiclient$ee_api_client.Expression}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureView.prototype, {asset:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("asset") ? this.Serializable$get("asset") : null;
}, set:function(value) {
  this.Serializable$set("asset", value);
}}, mapName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("mapName") ? this.Serializable$get("mapName") : null;
}, set:function(value) {
  this.Serializable$set("mapName", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, visualizationExpression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("visualizationExpression") ? this.Serializable$get("visualizationExpression") : null;
}, set:function(value) {
  this.Serializable$set("visualizationExpression", value);
}}});
module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("featureViewDestination", null == parameters.featureViewDestination ? null : parameters.featureViewDestination);
  this.Serializable$set("ingestionTimeParameters", null == parameters.ingestionTimeParameters ? null : parameters.ingestionTimeParameters);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions;
};
module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["featureViewDestination", "ingestionTimeParameters"], objects:{featureViewDestination:module$exports$eeapiclient$ee_api_client.FeatureViewDestination, ingestionTimeParameters:module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions.prototype, {featureViewDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("featureViewDestination") ? this.Serializable$get("featureViewDestination") : null;
}, set:function(value) {
  this.Serializable$set("featureViewDestination", value);
}}, ingestionTimeParameters:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("ingestionTimeParameters") ? this.Serializable$get("ingestionTimeParameters") : null;
}, set:function(value) {
  this.Serializable$set("ingestionTimeParameters", value);
}}});
module$exports$eeapiclient$ee_api_client.FeatureViewAttributeParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewAttribute = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FeatureViewAttribute, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FeatureViewAttribute.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewAttribute;
};
module$exports$eeapiclient$ee_api_client.FeatureViewAttribute.prototype.getPartialClassMetadata = function() {
  return {enums:{type:module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum}, keys:["name", "type"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewAttribute.prototype, {name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewAttribute, {Type:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewAttributeTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.FeatureViewDestinationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewDestination = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("assetVersion", null == parameters.assetVersion ? null : parameters.assetVersion);
  this.Serializable$set("permissions", null == parameters.permissions ? null : parameters.permissions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FeatureViewDestination, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FeatureViewDestination.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewDestination;
};
module$exports$eeapiclient$ee_api_client.FeatureViewDestination.prototype.getPartialClassMetadata = function() {
  return {enums:{permissions:module$exports$eeapiclient$ee_api_client.FeatureViewDestinationPermissionsEnum}, keys:["assetVersion", "name", "permissions"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewDestination.prototype, {assetVersion:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("assetVersion") ? this.Serializable$get("assetVersion") : null;
}, set:function(value) {
  this.Serializable$set("assetVersion", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, permissions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("permissions") ? this.Serializable$get("permissions") : null;
}, set:function(value) {
  this.Serializable$set("permissions", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewDestination, {Permissions:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewDestinationPermissionsEnum;
}}});
module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParametersParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("thinningOptions", null == parameters.thinningOptions ? null : parameters.thinningOptions);
  this.Serializable$set("rankingOptions", null == parameters.rankingOptions ? null : parameters.rankingOptions);
  this.Serializable$set("prerenderingOptions", null == parameters.prerenderingOptions ? null : parameters.prerenderingOptions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters;
};
module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters.prototype.getPartialClassMetadata = function() {
  return {keys:["prerenderingOptions", "rankingOptions", "thinningOptions"], objects:{prerenderingOptions:module$exports$eeapiclient$ee_api_client.PrerenderingOptions, rankingOptions:module$exports$eeapiclient$ee_api_client.RankingOptions, thinningOptions:module$exports$eeapiclient$ee_api_client.ThinningOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters.prototype, {prerenderingOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("prerenderingOptions") ? this.Serializable$get("prerenderingOptions") : null;
}, set:function(value) {
  this.Serializable$set("prerenderingOptions", value);
}}, rankingOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("rankingOptions") ? this.Serializable$get("rankingOptions") : null;
}, set:function(value) {
  this.Serializable$set("rankingOptions", value);
}}, thinningOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("thinningOptions") ? this.Serializable$get("thinningOptions") : null;
}, set:function(value) {
  this.Serializable$set("thinningOptions", value);
}}});
module$exports$eeapiclient$ee_api_client.FeatureViewLocationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewLocation = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("location", null == parameters.location ? null : parameters.location);
  this.Serializable$set("assetOptions", null == parameters.assetOptions ? null : parameters.assetOptions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FeatureViewLocation, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FeatureViewLocation.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewLocation;
};
module$exports$eeapiclient$ee_api_client.FeatureViewLocation.prototype.getPartialClassMetadata = function() {
  return {keys:["assetOptions", "location"], objects:{assetOptions:module$exports$eeapiclient$ee_api_client.FeatureViewOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewLocation.prototype, {assetOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("assetOptions") ? this.Serializable$get("assetOptions") : null;
}, set:function(value) {
  this.Serializable$set("assetOptions", value);
}}, location:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("location") ? this.Serializable$get("location") : null;
}, set:function(value) {
  this.Serializable$set("location", value);
}}});
module$exports$eeapiclient$ee_api_client.FeatureViewOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FeatureViewOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("featureViewAttributes", null == parameters.featureViewAttributes ? null : parameters.featureViewAttributes);
  this.Serializable$set("ingestionTimeParameters", null == parameters.ingestionTimeParameters ? null : parameters.ingestionTimeParameters);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FeatureViewOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FeatureViewOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FeatureViewOptions;
};
module$exports$eeapiclient$ee_api_client.FeatureViewOptions.prototype.getPartialClassMetadata = function() {
  return {arrays:{featureViewAttributes:module$exports$eeapiclient$ee_api_client.FeatureViewAttribute}, keys:["featureViewAttributes", "ingestionTimeParameters"], objects:{ingestionTimeParameters:module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FeatureViewOptions.prototype, {featureViewAttributes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("featureViewAttributes") ? this.Serializable$get("featureViewAttributes") : null;
}, set:function(value) {
  this.Serializable$set("featureViewAttributes", value);
}}, ingestionTimeParameters:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("ingestionTimeParameters") ? this.Serializable$get("ingestionTimeParameters") : null;
}, set:function(value) {
  this.Serializable$set("ingestionTimeParameters", value);
}}});
module$exports$eeapiclient$ee_api_client.FilmstripThumbnailParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FilmstripThumbnail = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("orientation", null == parameters.orientation ? null : parameters.orientation);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
  this.Serializable$set("grid", null == parameters.grid ? null : parameters.grid);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FilmstripThumbnail, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FilmstripThumbnail.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FilmstripThumbnail;
};
module$exports$eeapiclient$ee_api_client.FilmstripThumbnail.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum, orientation:module$exports$eeapiclient$ee_api_client.FilmstripThumbnailOrientationEnum}, keys:["expression", "fileFormat", "grid", "name", "orientation"], objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, grid:module$exports$eeapiclient$ee_api_client.PixelGrid}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FilmstripThumbnail.prototype, {expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, grid:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("grid") ? this.Serializable$get("grid") : null;
}, set:function(value) {
  this.Serializable$set("grid", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, orientation:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("orientation") ? this.Serializable$get("orientation") : null;
}, set:function(value) {
  this.Serializable$set("orientation", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FilmstripThumbnail, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.FilmstripThumbnailFileFormatEnum;
}}, Orientation:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.FilmstripThumbnailOrientationEnum;
}}});
module$exports$eeapiclient$ee_api_client.FolderQuotaParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FolderQuota = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("sizeBytes", null == parameters.sizeBytes ? null : parameters.sizeBytes);
  this.Serializable$set("maxSizeBytes", null == parameters.maxSizeBytes ? null : parameters.maxSizeBytes);
  this.Serializable$set("assetCount", null == parameters.assetCount ? null : parameters.assetCount);
  this.Serializable$set("maxAssets", null == parameters.maxAssets ? null : parameters.maxAssets);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FolderQuota, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FolderQuota.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FolderQuota;
};
module$exports$eeapiclient$ee_api_client.FolderQuota.prototype.getPartialClassMetadata = function() {
  return {keys:["assetCount", "maxAssets", "maxSizeBytes", "sizeBytes"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FolderQuota.prototype, {assetCount:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("assetCount") ? this.Serializable$get("assetCount") : null;
}, set:function(value) {
  this.Serializable$set("assetCount", value);
}}, maxAssets:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxAssets") ? this.Serializable$get("maxAssets") : null;
}, set:function(value) {
  this.Serializable$set("maxAssets", value);
}}, maxSizeBytes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxSizeBytes") ? this.Serializable$get("maxSizeBytes") : null;
}, set:function(value) {
  this.Serializable$set("maxSizeBytes", value);
}}, sizeBytes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sizeBytes") ? this.Serializable$get("sizeBytes") : null;
}, set:function(value) {
  this.Serializable$set("sizeBytes", value);
}}});
module$exports$eeapiclient$ee_api_client.FunctionDefinitionParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FunctionDefinition = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("argumentNames", null == parameters.argumentNames ? null : parameters.argumentNames);
  this.Serializable$set("body", null == parameters.body ? null : parameters.body);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FunctionDefinition, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FunctionDefinition.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FunctionDefinition;
};
module$exports$eeapiclient$ee_api_client.FunctionDefinition.prototype.getPartialClassMetadata = function() {
  return {keys:["argumentNames", "body"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FunctionDefinition.prototype, {argumentNames:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("argumentNames") ? this.Serializable$get("argumentNames") : null;
}, set:function(value) {
  this.Serializable$set("argumentNames", value);
}}, body:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("body") ? this.Serializable$get("body") : null;
}, set:function(value) {
  this.Serializable$set("body", value);
}}});
module$exports$eeapiclient$ee_api_client.FunctionInvocationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.FunctionInvocation = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("functionName", null == parameters.functionName ? null : parameters.functionName);
  this.Serializable$set("functionReference", null == parameters.functionReference ? null : parameters.functionReference);
  this.Serializable$set("arguments", null == parameters.arguments ? null : parameters.arguments);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.FunctionInvocation, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.FunctionInvocation.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.FunctionInvocation;
};
module$exports$eeapiclient$ee_api_client.FunctionInvocation.prototype.getPartialClassMetadata = function() {
  return {keys:["arguments", "functionName", "functionReference"], objectMaps:{arguments:{ctor:module$exports$eeapiclient$ee_api_client.ValueNode, isPropertyArray:!1, isSerializable:!0, isValueArray:!1}}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.FunctionInvocation.prototype, {arguments:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("arguments") ? this.Serializable$get("arguments") : null;
}, set:function(value) {
  this.Serializable$set("arguments", value);
}}, functionName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("functionName") ? this.Serializable$get("functionName") : null;
}, set:function(value) {
  this.Serializable$set("functionName", value);
}}, functionReference:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("functionReference") ? this.Serializable$get("functionReference") : null;
}, set:function(value) {
  this.Serializable$set("functionReference", value);
}}});
module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("cloudOptimized", null == parameters.cloudOptimized ? null : parameters.cloudOptimized);
  this.Serializable$set("tileDimensions", null == parameters.tileDimensions ? null : parameters.tileDimensions);
  this.Serializable$set("skipEmptyFiles", null == parameters.skipEmptyFiles ? null : parameters.skipEmptyFiles);
  this.Serializable$set("tileSize", null == parameters.tileSize ? null : parameters.tileSize);
  this.Serializable$set("noData", null == parameters.noData ? null : parameters.noData);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions;
};
module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["cloudOptimized", "noData", "skipEmptyFiles", "tileDimensions", "tileSize"], objects:{noData:module$exports$eeapiclient$ee_api_client.Number, tileDimensions:module$exports$eeapiclient$ee_api_client.GridDimensions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions.prototype, {cloudOptimized:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("cloudOptimized") ? this.Serializable$get("cloudOptimized") : null;
}, set:function(value) {
  this.Serializable$set("cloudOptimized", value);
}}, noData:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("noData") ? this.Serializable$get("noData") : null;
}, set:function(value) {
  this.Serializable$set("noData", value);
}}, skipEmptyFiles:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("skipEmptyFiles") ? this.Serializable$get("skipEmptyFiles") : null;
}, set:function(value) {
  this.Serializable$set("skipEmptyFiles", value);
}}, tileDimensions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileDimensions") ? this.Serializable$get("tileDimensions") : null;
}, set:function(value) {
  this.Serializable$set("tileDimensions", value);
}}, tileSize:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileSize") ? this.Serializable$get("tileSize") : null;
}, set:function(value) {
  this.Serializable$set("tileSize", value);
}}});
module$exports$eeapiclient$ee_api_client.GetIamPolicyRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("options", null == parameters.options ? null : parameters.options);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest;
};
module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["options"], objects:{options:module$exports$eeapiclient$ee_api_client.GetPolicyOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest.prototype, {options:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("options") ? this.Serializable$get("options") : null;
}, set:function(value) {
  this.Serializable$set("options", value);
}}});
module$exports$eeapiclient$ee_api_client.GetLinkedAssetRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.GetLinkedAssetRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.GetLinkedAssetRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.GetLinkedAssetRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.GetLinkedAssetRequest;
};
module$exports$eeapiclient$ee_api_client.GetLinkedAssetRequest.prototype.getPartialClassMetadata = function() {
  return {keys:[]};
};
module$exports$eeapiclient$ee_api_client.GetPixelsRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.GetPixelsRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
  this.Serializable$set("grid", null == parameters.grid ? null : parameters.grid);
  this.Serializable$set("region", null == parameters.region ? null : parameters.region);
  this.Serializable$set("bandIds", null == parameters.bandIds ? null : parameters.bandIds);
  this.Serializable$set("visualizationOptions", null == parameters.visualizationOptions ? null : parameters.visualizationOptions);
  this.Serializable$set("workloadTag", null == parameters.workloadTag ? null : parameters.workloadTag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.GetPixelsRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.GetPixelsRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.GetPixelsRequest;
};
module$exports$eeapiclient$ee_api_client.GetPixelsRequest.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum}, keys:"bandIds fileFormat grid region visualizationOptions workloadTag".split(" "), objectMaps:{region:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}}, objects:{grid:module$exports$eeapiclient$ee_api_client.PixelGrid, visualizationOptions:module$exports$eeapiclient$ee_api_client.VisualizationOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.GetPixelsRequest.prototype, {bandIds:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bandIds") ? this.Serializable$get("bandIds") : null;
}, set:function(value) {
  this.Serializable$set("bandIds", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, grid:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("grid") ? this.Serializable$get("grid") : null;
}, set:function(value) {
  this.Serializable$set("grid", value);
}}, region:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("region") ? this.Serializable$get("region") : null;
}, set:function(value) {
  this.Serializable$set("region", value);
}}, visualizationOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("visualizationOptions") ? this.Serializable$get("visualizationOptions") : null;
}, set:function(value) {
  this.Serializable$set("visualizationOptions", value);
}}, workloadTag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("workloadTag") ? this.Serializable$get("workloadTag") : null;
}, set:function(value) {
  this.Serializable$set("workloadTag", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.GetPixelsRequest, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.GetPixelsRequestFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.GetPolicyOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.GetPolicyOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("requestedPolicyVersion", null == parameters.requestedPolicyVersion ? null : parameters.requestedPolicyVersion);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.GetPolicyOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.GetPolicyOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.GetPolicyOptions;
};
module$exports$eeapiclient$ee_api_client.GetPolicyOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["requestedPolicyVersion"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.GetPolicyOptions.prototype, {requestedPolicyVersion:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestedPolicyVersion") ? this.Serializable$get("requestedPolicyVersion") : null;
}, set:function(value) {
  this.Serializable$set("requestedPolicyVersion", value);
}}});
module$exports$eeapiclient$ee_api_client.GridDimensionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.GridDimensions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("width", null == parameters.width ? null : parameters.width);
  this.Serializable$set("height", null == parameters.height ? null : parameters.height);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.GridDimensions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.GridDimensions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.GridDimensions;
};
module$exports$eeapiclient$ee_api_client.GridDimensions.prototype.getPartialClassMetadata = function() {
  return {keys:["height", "width"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.GridDimensions.prototype, {height:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("height") ? this.Serializable$get("height") : null;
}, set:function(value) {
  this.Serializable$set("height", value);
}}, width:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("width") ? this.Serializable$get("width") : null;
}, set:function(value) {
  this.Serializable$set("width", value);
}}});
module$exports$eeapiclient$ee_api_client.GridPointParameters = function() {
};
module$exports$eeapiclient$ee_api_client.GridPoint = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("x", null == parameters.x ? null : parameters.x);
  this.Serializable$set("y", null == parameters.y ? null : parameters.y);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.GridPoint, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.GridPoint.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.GridPoint;
};
module$exports$eeapiclient$ee_api_client.GridPoint.prototype.getPartialClassMetadata = function() {
  return {keys:["x", "y"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.GridPoint.prototype, {x:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("x") ? this.Serializable$get("x") : null;
}, set:function(value) {
  this.Serializable$set("x", value);
}}, y:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("y") ? this.Serializable$get("y") : null;
}, set:function(value) {
  this.Serializable$set("y", value);
}}});
module$exports$eeapiclient$ee_api_client.HttpBodyParameters = function() {
};
module$exports$eeapiclient$ee_api_client.HttpBody = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("contentType", null == parameters.contentType ? null : parameters.contentType);
  this.Serializable$set("data", null == parameters.data ? null : parameters.data);
  this.Serializable$set("extensions", null == parameters.extensions ? null : parameters.extensions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.HttpBody, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.HttpBody.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.HttpBody;
};
module$exports$eeapiclient$ee_api_client.HttpBody.prototype.getPartialClassMetadata = function() {
  return {keys:["contentType", "data", "extensions"], objectMaps:{extensions:{ctor:null, isPropertyArray:!0, isSerializable:!1, isValueArray:!1}}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.HttpBody.prototype, {contentType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("contentType") ? this.Serializable$get("contentType") : null;
}, set:function(value) {
  this.Serializable$set("contentType", value);
}}, data:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("data") ? this.Serializable$get("data") : null;
}, set:function(value) {
  this.Serializable$set("data", value);
}}, extensions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("extensions") ? this.Serializable$get("extensions") : null;
}, set:function(value) {
  this.Serializable$set("extensions", value);
}}});
module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("earthEngineDestination", null == parameters.earthEngineDestination ? null : parameters.earthEngineDestination);
  this.Serializable$set("pyramidingPolicy", null == parameters.pyramidingPolicy ? null : parameters.pyramidingPolicy);
  this.Serializable$set("pyramidingPolicyOverrides", null == parameters.pyramidingPolicyOverrides ? null : parameters.pyramidingPolicyOverrides);
  this.Serializable$set("tileSize", null == parameters.tileSize ? null : parameters.tileSize);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions;
};
module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{pyramidingPolicy:module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum, pyramidingPolicyOverrides:module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum}, keys:["earthEngineDestination", "pyramidingPolicy", "pyramidingPolicyOverrides", "tileSize"], objectMaps:{pyramidingPolicyOverrides:{ctor:null, isPropertyArray:!1, isSerializable:!1, 
  isValueArray:!1}}, objects:{earthEngineDestination:module$exports$eeapiclient$ee_api_client.EarthEngineDestination}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions.prototype, {earthEngineDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("earthEngineDestination") ? this.Serializable$get("earthEngineDestination") : null;
}, set:function(value) {
  this.Serializable$set("earthEngineDestination", value);
}}, pyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pyramidingPolicy") ? this.Serializable$get("pyramidingPolicy") : null;
}, set:function(value) {
  this.Serializable$set("pyramidingPolicy", value);
}}, pyramidingPolicyOverrides:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pyramidingPolicyOverrides") ? this.Serializable$get("pyramidingPolicyOverrides") : null;
}, set:function(value) {
  this.Serializable$set("pyramidingPolicyOverrides", value);
}}, tileSize:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileSize") ? this.Serializable$get("tileSize") : null;
}, set:function(value) {
  this.Serializable$set("tileSize", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions, {PyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyEnum;
}}, PyramidingPolicyOverrides:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ImageAssetExportOptionsPyramidingPolicyOverridesEnum;
}}});
module$exports$eeapiclient$ee_api_client.ImageBandParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ImageBand = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("id", null == parameters.id ? null : parameters.id);
  this.Serializable$set("dataType", null == parameters.dataType ? null : parameters.dataType);
  this.Serializable$set("grid", null == parameters.grid ? null : parameters.grid);
  this.Serializable$set("pyramidingPolicy", null == parameters.pyramidingPolicy ? null : parameters.pyramidingPolicy);
  this.Serializable$set("tilesets", null == parameters.tilesets ? null : parameters.tilesets);
  this.Serializable$set("missingData", null == parameters.missingData ? null : parameters.missingData);
  this.Serializable$set("tilesetId", null == parameters.tilesetId ? null : parameters.tilesetId);
  this.Serializable$set("tilesetBandIndex", null == parameters.tilesetBandIndex ? null : parameters.tilesetBandIndex);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ImageBand, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ImageBand.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ImageBand;
};
module$exports$eeapiclient$ee_api_client.ImageBand.prototype.getPartialClassMetadata = function() {
  return {arrays:{tilesets:module$exports$eeapiclient$ee_api_client.TilestoreTileset}, enums:{pyramidingPolicy:module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum}, keys:"dataType grid id missingData pyramidingPolicy tilesetBandIndex tilesetId tilesets".split(" "), objects:{dataType:module$exports$eeapiclient$ee_api_client.PixelDataType, grid:module$exports$eeapiclient$ee_api_client.PixelGrid, 
  missingData:module$exports$eeapiclient$ee_api_client.MissingData}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageBand.prototype, {dataType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dataType") ? this.Serializable$get("dataType") : null;
}, set:function(value) {
  this.Serializable$set("dataType", value);
}}, grid:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("grid") ? this.Serializable$get("grid") : null;
}, set:function(value) {
  this.Serializable$set("grid", value);
}}, id:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("id") ? this.Serializable$get("id") : null;
}, set:function(value) {
  this.Serializable$set("id", value);
}}, missingData:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("missingData") ? this.Serializable$get("missingData") : null;
}, set:function(value) {
  this.Serializable$set("missingData", value);
}}, pyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pyramidingPolicy") ? this.Serializable$get("pyramidingPolicy") : null;
}, set:function(value) {
  this.Serializable$set("pyramidingPolicy", value);
}}, tilesetBandIndex:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesetBandIndex") ? this.Serializable$get("tilesetBandIndex") : null;
}, set:function(value) {
  this.Serializable$set("tilesetBandIndex", value);
}}, tilesetId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesetId") ? this.Serializable$get("tilesetId") : null;
}, set:function(value) {
  this.Serializable$set("tilesetId", value);
}}, tilesets:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesets") ? this.Serializable$get("tilesets") : null;
}, set:function(value) {
  this.Serializable$set("tilesets", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageBand, {PyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ImageBandPyramidingPolicyEnum;
}}});
module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ImageFileExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("driveDestination", null == parameters.driveDestination ? null : parameters.driveDestination);
  this.Serializable$set("cloudStorageDestination", null == parameters.cloudStorageDestination ? null : parameters.cloudStorageDestination);
  this.Serializable$set("geoTiffOptions", null == parameters.geoTiffOptions ? null : parameters.geoTiffOptions);
  this.Serializable$set("tfRecordOptions", null == parameters.tfRecordOptions ? null : parameters.tfRecordOptions);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ImageFileExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ImageFileExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ImageFileExportOptions;
};
module$exports$eeapiclient$ee_api_client.ImageFileExportOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum}, keys:["cloudStorageDestination", "driveDestination", "fileFormat", "geoTiffOptions", "tfRecordOptions"], objects:{cloudStorageDestination:module$exports$eeapiclient$ee_api_client.CloudStorageDestination, driveDestination:module$exports$eeapiclient$ee_api_client.DriveDestination, 
  geoTiffOptions:module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions, tfRecordOptions:module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageFileExportOptions.prototype, {cloudStorageDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("cloudStorageDestination") ? this.Serializable$get("cloudStorageDestination") : null;
}, set:function(value) {
  this.Serializable$set("cloudStorageDestination", value);
}}, driveDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("driveDestination") ? this.Serializable$get("driveDestination") : null;
}, set:function(value) {
  this.Serializable$set("driveDestination", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, geoTiffOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("geoTiffOptions") ? this.Serializable$get("geoTiffOptions") : null;
}, set:function(value) {
  this.Serializable$set("geoTiffOptions", value);
}}, tfRecordOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tfRecordOptions") ? this.Serializable$get("tfRecordOptions") : null;
}, set:function(value) {
  this.Serializable$set("tfRecordOptions", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageFileExportOptions, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ImageFileExportOptionsFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.ImageManifestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ImageManifest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("properties", null == parameters.properties ? null : parameters.properties);
  this.Serializable$set("uriPrefix", null == parameters.uriPrefix ? null : parameters.uriPrefix);
  this.Serializable$set("tilesets", null == parameters.tilesets ? null : parameters.tilesets);
  this.Serializable$set("bands", null == parameters.bands ? null : parameters.bands);
  this.Serializable$set("maskBands", null == parameters.maskBands ? null : parameters.maskBands);
  this.Serializable$set("footprint", null == parameters.footprint ? null : parameters.footprint);
  this.Serializable$set("missingData", null == parameters.missingData ? null : parameters.missingData);
  this.Serializable$set("pyramidingPolicy", null == parameters.pyramidingPolicy ? null : parameters.pyramidingPolicy);
  this.Serializable$set("startTime", null == parameters.startTime ? null : parameters.startTime);
  this.Serializable$set("endTime", null == parameters.endTime ? null : parameters.endTime);
  this.Serializable$set("minTileAreaRatio", null == parameters.minTileAreaRatio ? null : parameters.minTileAreaRatio);
  this.Serializable$set("skipMetadataRead", null == parameters.skipMetadataRead ? null : parameters.skipMetadataRead);
  this.Serializable$set("memo", null == parameters.memo ? null : parameters.memo);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ImageManifest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ImageManifest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ImageManifest;
};
module$exports$eeapiclient$ee_api_client.ImageManifest.prototype.getPartialClassMetadata = function() {
  return {arrays:{bands:module$exports$eeapiclient$ee_api_client.TilesetBand, maskBands:module$exports$eeapiclient$ee_api_client.TilesetMaskBand, tilesets:module$exports$eeapiclient$ee_api_client.Tileset}, enums:{pyramidingPolicy:module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum}, keys:"bands endTime footprint maskBands memo minTileAreaRatio missingData name properties pyramidingPolicy skipMetadataRead startTime tilesets uriPrefix".split(" "), 
  objectMaps:{properties:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}}, objects:{footprint:module$exports$eeapiclient$ee_api_client.PixelFootprint, missingData:module$exports$eeapiclient$ee_api_client.MissingData}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageManifest.prototype, {bands:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bands") ? this.Serializable$get("bands") : null;
}, set:function(value) {
  this.Serializable$set("bands", value);
}}, endTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("endTime") ? this.Serializable$get("endTime") : null;
}, set:function(value) {
  this.Serializable$set("endTime", value);
}}, footprint:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("footprint") ? this.Serializable$get("footprint") : null;
}, set:function(value) {
  this.Serializable$set("footprint", value);
}}, maskBands:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maskBands") ? this.Serializable$get("maskBands") : null;
}, set:function(value) {
  this.Serializable$set("maskBands", value);
}}, memo:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("memo") ? this.Serializable$get("memo") : null;
}, set:function(value) {
  this.Serializable$set("memo", value);
}}, minTileAreaRatio:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("minTileAreaRatio") ? this.Serializable$get("minTileAreaRatio") : null;
}, set:function(value) {
  this.Serializable$set("minTileAreaRatio", value);
}}, missingData:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("missingData") ? this.Serializable$get("missingData") : null;
}, set:function(value) {
  this.Serializable$set("missingData", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, properties:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("properties") ? this.Serializable$get("properties") : null;
}, set:function(value) {
  this.Serializable$set("properties", value);
}}, pyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pyramidingPolicy") ? this.Serializable$get("pyramidingPolicy") : null;
}, set:function(value) {
  this.Serializable$set("pyramidingPolicy", value);
}}, skipMetadataRead:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("skipMetadataRead") ? this.Serializable$get("skipMetadataRead") : null;
}, set:function(value) {
  this.Serializable$set("skipMetadataRead", value);
}}, startTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("startTime") ? this.Serializable$get("startTime") : null;
}, set:function(value) {
  this.Serializable$set("startTime", value);
}}, tilesets:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesets") ? this.Serializable$get("tilesets") : null;
}, set:function(value) {
  this.Serializable$set("tilesets", value);
}}, uriPrefix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("uriPrefix") ? this.Serializable$get("uriPrefix") : null;
}, set:function(value) {
  this.Serializable$set("uriPrefix", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageManifest, {PyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ImageManifestPyramidingPolicyEnum;
}}});
module$exports$eeapiclient$ee_api_client.ImageSourceParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ImageSource = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("uris", null == parameters.uris ? null : parameters.uris);
  this.Serializable$set("affineTransform", null == parameters.affineTransform ? null : parameters.affineTransform);
  this.Serializable$set("dimensions", null == parameters.dimensions ? null : parameters.dimensions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ImageSource, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ImageSource.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ImageSource;
};
module$exports$eeapiclient$ee_api_client.ImageSource.prototype.getPartialClassMetadata = function() {
  return {keys:["affineTransform", "dimensions", "uris"], objects:{affineTransform:module$exports$eeapiclient$ee_api_client.AffineTransform, dimensions:module$exports$eeapiclient$ee_api_client.GridDimensions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImageSource.prototype, {affineTransform:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("affineTransform") ? this.Serializable$get("affineTransform") : null;
}, set:function(value) {
  this.Serializable$set("affineTransform", value);
}}, dimensions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dimensions") ? this.Serializable$get("dimensions") : null;
}, set:function(value) {
  this.Serializable$set("dimensions", value);
}}, uris:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("uris") ? this.Serializable$get("uris") : null;
}, set:function(value) {
  this.Serializable$set("uris", value);
}}});
module$exports$eeapiclient$ee_api_client.ImportImageRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ImportImageRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("imageManifest", null == parameters.imageManifest ? null : parameters.imageManifest);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("overwrite", null == parameters.overwrite ? null : parameters.overwrite);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
  this.Serializable$set("mode", null == parameters.mode ? null : parameters.mode);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ImportImageRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ImportImageRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ImportImageRequest;
};
module$exports$eeapiclient$ee_api_client.ImportImageRequest.prototype.getPartialClassMetadata = function() {
  return {enums:{mode:module$exports$eeapiclient$ee_api_client.ImportImageRequestModeEnum}, keys:["description", "imageManifest", "mode", "overwrite", "requestId"], objects:{imageManifest:module$exports$eeapiclient$ee_api_client.ImageManifest}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImportImageRequest.prototype, {description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, imageManifest:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("imageManifest") ? this.Serializable$get("imageManifest") : null;
}, set:function(value) {
  this.Serializable$set("imageManifest", value);
}}, mode:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("mode") ? this.Serializable$get("mode") : null;
}, set:function(value) {
  this.Serializable$set("mode", value);
}}, overwrite:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("overwrite") ? this.Serializable$get("overwrite") : null;
}, set:function(value) {
  this.Serializable$set("overwrite", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImportImageRequest, {Mode:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ImportImageRequestModeEnum;
}}});
module$exports$eeapiclient$ee_api_client.ImportTableRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ImportTableRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("tableManifest", null == parameters.tableManifest ? null : parameters.tableManifest);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("overwrite", null == parameters.overwrite ? null : parameters.overwrite);
  this.Serializable$set("requestId", null == parameters.requestId ? null : parameters.requestId);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ImportTableRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ImportTableRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ImportTableRequest;
};
module$exports$eeapiclient$ee_api_client.ImportTableRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["description", "overwrite", "requestId", "tableManifest"], objects:{tableManifest:module$exports$eeapiclient$ee_api_client.TableManifest}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ImportTableRequest.prototype, {description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, overwrite:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("overwrite") ? this.Serializable$get("overwrite") : null;
}, set:function(value) {
  this.Serializable$set("overwrite", value);
}}, requestId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("requestId") ? this.Serializable$get("requestId") : null;
}, set:function(value) {
  this.Serializable$set("requestId", value);
}}, tableManifest:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tableManifest") ? this.Serializable$get("tableManifest") : null;
}, set:function(value) {
  this.Serializable$set("tableManifest", value);
}}});
module$exports$eeapiclient$ee_api_client.LinkAssetRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.LinkAssetRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("destinationName", null == parameters.destinationName ? null : parameters.destinationName);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.LinkAssetRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.LinkAssetRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.LinkAssetRequest;
};
module$exports$eeapiclient$ee_api_client.LinkAssetRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["destinationName"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.LinkAssetRequest.prototype, {destinationName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("destinationName") ? this.Serializable$get("destinationName") : null;
}, set:function(value) {
  this.Serializable$set("destinationName", value);
}}});
module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("algorithms", null == parameters.algorithms ? null : parameters.algorithms);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponse;
};
module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponse.prototype.getPartialClassMetadata = function() {
  return {arrays:{algorithms:module$exports$eeapiclient$ee_api_client.Algorithm}, keys:["algorithms"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponse.prototype, {algorithms:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("algorithms") ? this.Serializable$get("algorithms") : null;
}, set:function(value) {
  this.Serializable$set("algorithms", value);
}}});
module$exports$eeapiclient$ee_api_client.ListAssetsResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ListAssetsResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("assets", null == parameters.assets ? null : parameters.assets);
  this.Serializable$set("nextPageToken", null == parameters.nextPageToken ? null : parameters.nextPageToken);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ListAssetsResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ListAssetsResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ListAssetsResponse;
};
module$exports$eeapiclient$ee_api_client.ListAssetsResponse.prototype.getPartialClassMetadata = function() {
  return {arrays:{assets:module$exports$eeapiclient$ee_api_client.EarthEngineAsset}, keys:["assets", "nextPageToken"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ListAssetsResponse.prototype, {assets:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("assets") ? this.Serializable$get("assets") : null;
}, set:function(value) {
  this.Serializable$set("assets", value);
}}, nextPageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("nextPageToken") ? this.Serializable$get("nextPageToken") : null;
}, set:function(value) {
  this.Serializable$set("nextPageToken", value);
}}});
module$exports$eeapiclient$ee_api_client.ListFeaturesResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ListFeaturesResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("features", null == parameters.features ? null : parameters.features);
  this.Serializable$set("nextPageToken", null == parameters.nextPageToken ? null : parameters.nextPageToken);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ListFeaturesResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ListFeaturesResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ListFeaturesResponse;
};
module$exports$eeapiclient$ee_api_client.ListFeaturesResponse.prototype.getPartialClassMetadata = function() {
  return {arrays:{features:module$exports$eeapiclient$ee_api_client.Feature}, keys:["features", "nextPageToken", "type"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ListFeaturesResponse.prototype, {features:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("features") ? this.Serializable$get("features") : null;
}, set:function(value) {
  this.Serializable$set("features", value);
}}, nextPageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("nextPageToken") ? this.Serializable$get("nextPageToken") : null;
}, set:function(value) {
  this.Serializable$set("nextPageToken", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}});
module$exports$eeapiclient$ee_api_client.ListOperationsResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ListOperationsResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("operations", null == parameters.operations ? null : parameters.operations);
  this.Serializable$set("nextPageToken", null == parameters.nextPageToken ? null : parameters.nextPageToken);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ListOperationsResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ListOperationsResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ListOperationsResponse;
};
module$exports$eeapiclient$ee_api_client.ListOperationsResponse.prototype.getPartialClassMetadata = function() {
  return {arrays:{operations:module$exports$eeapiclient$ee_api_client.Operation}, keys:["nextPageToken", "operations"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ListOperationsResponse.prototype, {nextPageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("nextPageToken") ? this.Serializable$get("nextPageToken") : null;
}, set:function(value) {
  this.Serializable$set("nextPageToken", value);
}}, operations:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("operations") ? this.Serializable$get("operations") : null;
}, set:function(value) {
  this.Serializable$set("operations", value);
}}});
module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("subscriptions", null == parameters.subscriptions ? null : parameters.subscriptions);
  this.Serializable$set("nextPageToken", null == parameters.nextPageToken ? null : parameters.nextPageToken);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponse;
};
module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponse.prototype.getPartialClassMetadata = function() {
  return {arrays:{subscriptions:module$exports$eeapiclient$ee_api_client.Subscription}, keys:["nextPageToken", "subscriptions"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponse.prototype, {nextPageToken:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("nextPageToken") ? this.Serializable$get("nextPageToken") : null;
}, set:function(value) {
  this.Serializable$set("nextPageToken", value);
}}, subscriptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("subscriptions") ? this.Serializable$get("subscriptions") : null;
}, set:function(value) {
  this.Serializable$set("subscriptions", value);
}}});
module$exports$eeapiclient$ee_api_client.LogConfigParameters = function() {
};
module$exports$eeapiclient$ee_api_client.LogConfig = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("counter", null == parameters.counter ? null : parameters.counter);
  this.Serializable$set("dataAccess", null == parameters.dataAccess ? null : parameters.dataAccess);
  this.Serializable$set("cloudAudit", null == parameters.cloudAudit ? null : parameters.cloudAudit);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.LogConfig, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.LogConfig.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.LogConfig;
};
module$exports$eeapiclient$ee_api_client.LogConfig.prototype.getPartialClassMetadata = function() {
  return {keys:["cloudAudit", "counter", "dataAccess"], objects:{cloudAudit:module$exports$eeapiclient$ee_api_client.CloudAuditOptions, counter:module$exports$eeapiclient$ee_api_client.CounterOptions, dataAccess:module$exports$eeapiclient$ee_api_client.DataAccessOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.LogConfig.prototype, {cloudAudit:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("cloudAudit") ? this.Serializable$get("cloudAudit") : null;
}, set:function(value) {
  this.Serializable$set("cloudAudit", value);
}}, counter:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("counter") ? this.Serializable$get("counter") : null;
}, set:function(value) {
  this.Serializable$set("counter", value);
}}, dataAccess:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dataAccess") ? this.Serializable$get("dataAccess") : null;
}, set:function(value) {
  this.Serializable$set("dataAccess", value);
}}});
module$exports$eeapiclient$ee_api_client.MissingDataParameters = function() {
};
module$exports$eeapiclient$ee_api_client.MissingData = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("values", null == parameters.values ? null : parameters.values);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.MissingData, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.MissingData.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.MissingData;
};
module$exports$eeapiclient$ee_api_client.MissingData.prototype.getPartialClassMetadata = function() {
  return {keys:["values"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.MissingData.prototype, {values:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("values") ? this.Serializable$get("values") : null;
}, set:function(value) {
  this.Serializable$set("values", value);
}}});
module$exports$eeapiclient$ee_api_client.MoveAssetRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.MoveAssetRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("destinationName", null == parameters.destinationName ? null : parameters.destinationName);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.MoveAssetRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.MoveAssetRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.MoveAssetRequest;
};
module$exports$eeapiclient$ee_api_client.MoveAssetRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["destinationName"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.MoveAssetRequest.prototype, {destinationName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("destinationName") ? this.Serializable$get("destinationName") : null;
}, set:function(value) {
  this.Serializable$set("destinationName", value);
}}});
module$exports$eeapiclient$ee_api_client.NumberParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Number = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("floatValue", null == parameters.floatValue ? null : parameters.floatValue);
  this.Serializable$set("integerValue", null == parameters.integerValue ? null : parameters.integerValue);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Number, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Number.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Number;
};
module$exports$eeapiclient$ee_api_client.Number.prototype.getPartialClassMetadata = function() {
  return {keys:["floatValue", "integerValue"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Number.prototype, {floatValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("floatValue") ? this.Serializable$get("floatValue") : null;
}, set:function(value) {
  this.Serializable$set("floatValue", value);
}}, integerValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("integerValue") ? this.Serializable$get("integerValue") : null;
}, set:function(value) {
  this.Serializable$set("integerValue", value);
}}});
module$exports$eeapiclient$ee_api_client.OperationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Operation = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("metadata", null == parameters.metadata ? null : parameters.metadata);
  this.Serializable$set("done", null == parameters.done ? null : parameters.done);
  this.Serializable$set("error", null == parameters.error ? null : parameters.error);
  this.Serializable$set("response", null == parameters.response ? null : parameters.response);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Operation, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Operation.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Operation;
};
module$exports$eeapiclient$ee_api_client.Operation.prototype.getPartialClassMetadata = function() {
  return {keys:["done", "error", "metadata", "name", "response"], objectMaps:{metadata:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}, response:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}}, objects:{error:module$exports$eeapiclient$ee_api_client.Status}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Operation.prototype, {done:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("done") ? this.Serializable$get("done") : null;
}, set:function(value) {
  this.Serializable$set("done", value);
}}, error:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("error") ? this.Serializable$get("error") : null;
}, set:function(value) {
  this.Serializable$set("error", value);
}}, metadata:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("metadata") ? this.Serializable$get("metadata") : null;
}, set:function(value) {
  this.Serializable$set("metadata", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, response:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("response") ? this.Serializable$get("response") : null;
}, set:function(value) {
  this.Serializable$set("response", value);
}}});
module$exports$eeapiclient$ee_api_client.OperationMetadataParameters = function() {
};
module$exports$eeapiclient$ee_api_client.OperationMetadata = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("state", null == parameters.state ? null : parameters.state);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("priority", null == parameters.priority ? null : parameters.priority);
  this.Serializable$set("createTime", null == parameters.createTime ? null : parameters.createTime);
  this.Serializable$set("updateTime", null == parameters.updateTime ? null : parameters.updateTime);
  this.Serializable$set("startTime", null == parameters.startTime ? null : parameters.startTime);
  this.Serializable$set("endTime", null == parameters.endTime ? null : parameters.endTime);
  this.Serializable$set("progress", null == parameters.progress ? null : parameters.progress);
  this.Serializable$set("stages", null == parameters.stages ? null : parameters.stages);
  this.Serializable$set("attempt", null == parameters.attempt ? null : parameters.attempt);
  this.Serializable$set("scriptUri", null == parameters.scriptUri ? null : parameters.scriptUri);
  this.Serializable$set("destinationUris", null == parameters.destinationUris ? null : parameters.destinationUris);
  this.Serializable$set("notifications", null == parameters.notifications ? null : parameters.notifications);
  this.Serializable$set("batchEecuUsageSeconds", null == parameters.batchEecuUsageSeconds ? null : parameters.batchEecuUsageSeconds);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.OperationMetadata, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.OperationMetadata.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.OperationMetadata;
};
module$exports$eeapiclient$ee_api_client.OperationMetadata.prototype.getPartialClassMetadata = function() {
  return {arrays:{notifications:module$exports$eeapiclient$ee_api_client.OperationNotification, stages:module$exports$eeapiclient$ee_api_client.OperationStage}, enums:{state:module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum}, keys:"attempt batchEecuUsageSeconds createTime description destinationUris endTime notifications priority progress scriptUri stages startTime state type updateTime".split(" ")};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.OperationMetadata.prototype, {attempt:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("attempt") ? this.Serializable$get("attempt") : null;
}, set:function(value) {
  this.Serializable$set("attempt", value);
}}, batchEecuUsageSeconds:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("batchEecuUsageSeconds") ? this.Serializable$get("batchEecuUsageSeconds") : null;
}, set:function(value) {
  this.Serializable$set("batchEecuUsageSeconds", value);
}}, createTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("createTime") ? this.Serializable$get("createTime") : null;
}, set:function(value) {
  this.Serializable$set("createTime", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, destinationUris:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("destinationUris") ? this.Serializable$get("destinationUris") : null;
}, set:function(value) {
  this.Serializable$set("destinationUris", value);
}}, endTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("endTime") ? this.Serializable$get("endTime") : null;
}, set:function(value) {
  this.Serializable$set("endTime", value);
}}, notifications:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("notifications") ? this.Serializable$get("notifications") : null;
}, set:function(value) {
  this.Serializable$set("notifications", value);
}}, priority:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("priority") ? this.Serializable$get("priority") : null;
}, set:function(value) {
  this.Serializable$set("priority", value);
}}, progress:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("progress") ? this.Serializable$get("progress") : null;
}, set:function(value) {
  this.Serializable$set("progress", value);
}}, scriptUri:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("scriptUri") ? this.Serializable$get("scriptUri") : null;
}, set:function(value) {
  this.Serializable$set("scriptUri", value);
}}, stages:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("stages") ? this.Serializable$get("stages") : null;
}, set:function(value) {
  this.Serializable$set("stages", value);
}}, startTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("startTime") ? this.Serializable$get("startTime") : null;
}, set:function(value) {
  this.Serializable$set("startTime", value);
}}, state:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("state") ? this.Serializable$get("state") : null;
}, set:function(value) {
  this.Serializable$set("state", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}, updateTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("updateTime") ? this.Serializable$get("updateTime") : null;
}, set:function(value) {
  this.Serializable$set("updateTime", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.OperationMetadata, {State:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.OperationMetadataStateEnum;
}}});
module$exports$eeapiclient$ee_api_client.OperationNotificationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.OperationNotification = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("severity", null == parameters.severity ? null : parameters.severity);
  this.Serializable$set("topic", null == parameters.topic ? null : parameters.topic);
  this.Serializable$set("detail", null == parameters.detail ? null : parameters.detail);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.OperationNotification, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.OperationNotification.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.OperationNotification;
};
module$exports$eeapiclient$ee_api_client.OperationNotification.prototype.getPartialClassMetadata = function() {
  return {enums:{severity:module$exports$eeapiclient$ee_api_client.OperationNotificationSeverityEnum}, keys:["detail", "severity", "topic"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.OperationNotification.prototype, {detail:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("detail") ? this.Serializable$get("detail") : null;
}, set:function(value) {
  this.Serializable$set("detail", value);
}}, severity:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("severity") ? this.Serializable$get("severity") : null;
}, set:function(value) {
  this.Serializable$set("severity", value);
}}, topic:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("topic") ? this.Serializable$get("topic") : null;
}, set:function(value) {
  this.Serializable$set("topic", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.OperationNotification, {Severity:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.OperationNotificationSeverityEnum;
}}});
module$exports$eeapiclient$ee_api_client.OperationStageParameters = function() {
};
module$exports$eeapiclient$ee_api_client.OperationStage = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("displayName", null == parameters.displayName ? null : parameters.displayName);
  this.Serializable$set("completeWorkUnits", null == parameters.completeWorkUnits ? null : parameters.completeWorkUnits);
  this.Serializable$set("totalWorkUnits", null == parameters.totalWorkUnits ? null : parameters.totalWorkUnits);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.OperationStage, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.OperationStage.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.OperationStage;
};
module$exports$eeapiclient$ee_api_client.OperationStage.prototype.getPartialClassMetadata = function() {
  return {keys:["completeWorkUnits", "description", "displayName", "totalWorkUnits"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.OperationStage.prototype, {completeWorkUnits:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("completeWorkUnits") ? this.Serializable$get("completeWorkUnits") : null;
}, set:function(value) {
  this.Serializable$set("completeWorkUnits", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, displayName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("displayName") ? this.Serializable$get("displayName") : null;
}, set:function(value) {
  this.Serializable$set("displayName", value);
}}, totalWorkUnits:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("totalWorkUnits") ? this.Serializable$get("totalWorkUnits") : null;
}, set:function(value) {
  this.Serializable$set("totalWorkUnits", value);
}}});
module$exports$eeapiclient$ee_api_client.PixelDataTypeParameters = function() {
};
module$exports$eeapiclient$ee_api_client.PixelDataType = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("precision", null == parameters.precision ? null : parameters.precision);
  this.Serializable$set("range", null == parameters.range ? null : parameters.range);
  this.Serializable$set("dimensionsCount", null == parameters.dimensionsCount ? null : parameters.dimensionsCount);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.PixelDataType, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.PixelDataType.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.PixelDataType;
};
module$exports$eeapiclient$ee_api_client.PixelDataType.prototype.getPartialClassMetadata = function() {
  return {enums:{precision:module$exports$eeapiclient$ee_api_client.PixelDataTypePrecisionEnum}, keys:["dimensionsCount", "precision", "range"], objects:{range:module$exports$eeapiclient$ee_api_client.DoubleRange}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.PixelDataType.prototype, {dimensionsCount:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dimensionsCount") ? this.Serializable$get("dimensionsCount") : null;
}, set:function(value) {
  this.Serializable$set("dimensionsCount", value);
}}, precision:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("precision") ? this.Serializable$get("precision") : null;
}, set:function(value) {
  this.Serializable$set("precision", value);
}}, range:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("range") ? this.Serializable$get("range") : null;
}, set:function(value) {
  this.Serializable$set("range", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.PixelDataType, {Precision:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.PixelDataTypePrecisionEnum;
}}});
module$exports$eeapiclient$ee_api_client.PixelFootprintParameters = function() {
};
module$exports$eeapiclient$ee_api_client.PixelFootprint = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("points", null == parameters.points ? null : parameters.points);
  this.Serializable$set("bandId", null == parameters.bandId ? null : parameters.bandId);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.PixelFootprint, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.PixelFootprint.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.PixelFootprint;
};
module$exports$eeapiclient$ee_api_client.PixelFootprint.prototype.getPartialClassMetadata = function() {
  return {arrays:{points:module$exports$eeapiclient$ee_api_client.GridPoint}, keys:["bandId", "points"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.PixelFootprint.prototype, {bandId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bandId") ? this.Serializable$get("bandId") : null;
}, set:function(value) {
  this.Serializable$set("bandId", value);
}}, points:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("points") ? this.Serializable$get("points") : null;
}, set:function(value) {
  this.Serializable$set("points", value);
}}});
module$exports$eeapiclient$ee_api_client.PixelGridParameters = function() {
};
module$exports$eeapiclient$ee_api_client.PixelGrid = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("crsCode", null == parameters.crsCode ? null : parameters.crsCode);
  this.Serializable$set("crsWkt", null == parameters.crsWkt ? null : parameters.crsWkt);
  this.Serializable$set("dimensions", null == parameters.dimensions ? null : parameters.dimensions);
  this.Serializable$set("affineTransform", null == parameters.affineTransform ? null : parameters.affineTransform);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.PixelGrid, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.PixelGrid.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.PixelGrid;
};
module$exports$eeapiclient$ee_api_client.PixelGrid.prototype.getPartialClassMetadata = function() {
  return {keys:["affineTransform", "crsCode", "crsWkt", "dimensions"], objects:{affineTransform:module$exports$eeapiclient$ee_api_client.AffineTransform, dimensions:module$exports$eeapiclient$ee_api_client.GridDimensions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.PixelGrid.prototype, {affineTransform:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("affineTransform") ? this.Serializable$get("affineTransform") : null;
}, set:function(value) {
  this.Serializable$set("affineTransform", value);
}}, crsCode:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("crsCode") ? this.Serializable$get("crsCode") : null;
}, set:function(value) {
  this.Serializable$set("crsCode", value);
}}, crsWkt:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("crsWkt") ? this.Serializable$get("crsWkt") : null;
}, set:function(value) {
  this.Serializable$set("crsWkt", value);
}}, dimensions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dimensions") ? this.Serializable$get("dimensions") : null;
}, set:function(value) {
  this.Serializable$set("dimensions", value);
}}});
module$exports$eeapiclient$ee_api_client.PolicyParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Policy = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("version", null == parameters.version ? null : parameters.version);
  this.Serializable$set("bindings", null == parameters.bindings ? null : parameters.bindings);
  this.Serializable$set("auditConfigs", null == parameters.auditConfigs ? null : parameters.auditConfigs);
  this.Serializable$set("rules", null == parameters.rules ? null : parameters.rules);
  this.Serializable$set("etag", null == parameters.etag ? null : parameters.etag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Policy, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Policy.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Policy;
};
module$exports$eeapiclient$ee_api_client.Policy.prototype.getPartialClassMetadata = function() {
  return {arrays:{auditConfigs:module$exports$eeapiclient$ee_api_client.AuditConfig, bindings:module$exports$eeapiclient$ee_api_client.Binding, rules:module$exports$eeapiclient$ee_api_client.Rule}, keys:["auditConfigs", "bindings", "etag", "rules", "version"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Policy.prototype, {auditConfigs:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("auditConfigs") ? this.Serializable$get("auditConfigs") : null;
}, set:function(value) {
  this.Serializable$set("auditConfigs", value);
}}, bindings:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bindings") ? this.Serializable$get("bindings") : null;
}, set:function(value) {
  this.Serializable$set("bindings", value);
}}, etag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("etag") ? this.Serializable$get("etag") : null;
}, set:function(value) {
  this.Serializable$set("etag", value);
}}, rules:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("rules") ? this.Serializable$get("rules") : null;
}, set:function(value) {
  this.Serializable$set("rules", value);
}}, version:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("version") ? this.Serializable$get("version") : null;
}, set:function(value) {
  this.Serializable$set("version", value);
}}});
module$exports$eeapiclient$ee_api_client.PrerenderingOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.PrerenderingOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("prerenderTiles", null == parameters.prerenderTiles ? null : parameters.prerenderTiles);
  this.Serializable$set("tileLimiting", null == parameters.tileLimiting ? null : parameters.tileLimiting);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.PrerenderingOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.PrerenderingOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.PrerenderingOptions;
};
module$exports$eeapiclient$ee_api_client.PrerenderingOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["prerenderTiles", "tileLimiting"], objects:{tileLimiting:module$exports$eeapiclient$ee_api_client.TileLimiting}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.PrerenderingOptions.prototype, {prerenderTiles:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("prerenderTiles") ? this.Serializable$get("prerenderTiles") : null;
}, set:function(value) {
  this.Serializable$set("prerenderTiles", value);
}}, tileLimiting:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileLimiting") ? this.Serializable$get("tileLimiting") : null;
}, set:function(value) {
  this.Serializable$set("tileLimiting", value);
}}});
module$exports$eeapiclient$ee_api_client.ProjectConfigParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectConfig = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("registration", null == parameters.registration ? null : parameters.registration);
  this.Serializable$set("trialStatus", null == parameters.trialStatus ? null : parameters.trialStatus);
  this.Serializable$set("vpcServiceControlsRestricted", null == parameters.vpcServiceControlsRestricted ? null : parameters.vpcServiceControlsRestricted);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ProjectConfig, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ProjectConfig.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ProjectConfig;
};
module$exports$eeapiclient$ee_api_client.ProjectConfig.prototype.getPartialClassMetadata = function() {
  return {keys:["name", "registration", "trialStatus", "vpcServiceControlsRestricted"], objects:{registration:module$exports$eeapiclient$ee_api_client.ProjectRegistration, trialStatus:module$exports$eeapiclient$ee_api_client.TrialStatus}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ProjectConfig.prototype, {name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, registration:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("registration") ? this.Serializable$get("registration") : null;
}, set:function(value) {
  this.Serializable$set("registration", value);
}}, trialStatus:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("trialStatus") ? this.Serializable$get("trialStatus") : null;
}, set:function(value) {
  this.Serializable$set("trialStatus", value);
}}, vpcServiceControlsRestricted:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("vpcServiceControlsRestricted") ? this.Serializable$get("vpcServiceControlsRestricted") : null;
}, set:function(value) {
  this.Serializable$set("vpcServiceControlsRestricted", value);
}}});
module$exports$eeapiclient$ee_api_client.ProjectRegistrationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectRegistration = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("billingConsent", null == parameters.billingConsent ? null : parameters.billingConsent);
  this.Serializable$set("freeQuota", null == parameters.freeQuota ? null : parameters.freeQuota);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ProjectRegistration, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ProjectRegistration.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ProjectRegistration;
};
module$exports$eeapiclient$ee_api_client.ProjectRegistration.prototype.getPartialClassMetadata = function() {
  return {enums:{billingConsent:module$exports$eeapiclient$ee_api_client.ProjectRegistrationBillingConsentEnum, freeQuota:module$exports$eeapiclient$ee_api_client.ProjectRegistrationFreeQuotaEnum}, keys:["billingConsent", "freeQuota"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ProjectRegistration.prototype, {billingConsent:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("billingConsent") ? this.Serializable$get("billingConsent") : null;
}, set:function(value) {
  this.Serializable$set("billingConsent", value);
}}, freeQuota:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("freeQuota") ? this.Serializable$get("freeQuota") : null;
}, set:function(value) {
  this.Serializable$set("freeQuota", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ProjectRegistration, {BillingConsent:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ProjectRegistrationBillingConsentEnum;
}}, FreeQuota:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ProjectRegistrationFreeQuotaEnum;
}}});
module$exports$eeapiclient$ee_api_client.RankByAttributeRuleParameters = function() {
};
module$exports$eeapiclient$ee_api_client.RankByAttributeRule = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("attributeName", null == parameters.attributeName ? null : parameters.attributeName);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.RankByAttributeRule, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.RankByAttributeRule.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.RankByAttributeRule;
};
module$exports$eeapiclient$ee_api_client.RankByAttributeRule.prototype.getPartialClassMetadata = function() {
  return {keys:["attributeName"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.RankByAttributeRule.prototype, {attributeName:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("attributeName") ? this.Serializable$get("attributeName") : null;
}, set:function(value) {
  this.Serializable$set("attributeName", value);
}}});
module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRuleParameters = function() {
};
module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRule = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRule, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRule.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRule;
};
module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRule.prototype.getPartialClassMetadata = function() {
  return {keys:[]};
};
module$exports$eeapiclient$ee_api_client.RankByMinVisibleLodRuleParameters = function() {
};
module$exports$eeapiclient$ee_api_client.RankByMinVisibleLodRule = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.RankByMinVisibleLodRule, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.RankByMinVisibleLodRule.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.RankByMinVisibleLodRule;
};
module$exports$eeapiclient$ee_api_client.RankByMinVisibleLodRule.prototype.getPartialClassMetadata = function() {
  return {keys:[]};
};
module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRuleParameters = function() {
};
module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRule = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRule, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRule.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRule;
};
module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRule.prototype.getPartialClassMetadata = function() {
  return {keys:[]};
};
module$exports$eeapiclient$ee_api_client.RankByOneThingRuleParameters = function() {
};
module$exports$eeapiclient$ee_api_client.RankByOneThingRule = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("rankByAttributeRule", null == parameters.rankByAttributeRule ? null : parameters.rankByAttributeRule);
  this.Serializable$set("rankByMinVisibleLodRule", null == parameters.rankByMinVisibleLodRule ? null : parameters.rankByMinVisibleLodRule);
  this.Serializable$set("rankByGeometryTypeRule", null == parameters.rankByGeometryTypeRule ? null : parameters.rankByGeometryTypeRule);
  this.Serializable$set("rankByMinZoomLevelRule", null == parameters.rankByMinZoomLevelRule ? null : parameters.rankByMinZoomLevelRule);
  this.Serializable$set("direction", null == parameters.direction ? null : parameters.direction);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.RankByOneThingRule, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.RankByOneThingRule.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.RankByOneThingRule;
};
module$exports$eeapiclient$ee_api_client.RankByOneThingRule.prototype.getPartialClassMetadata = function() {
  return {enums:{direction:module$exports$eeapiclient$ee_api_client.RankByOneThingRuleDirectionEnum}, keys:["direction", "rankByAttributeRule", "rankByGeometryTypeRule", "rankByMinVisibleLodRule", "rankByMinZoomLevelRule"], objects:{rankByAttributeRule:module$exports$eeapiclient$ee_api_client.RankByAttributeRule, rankByGeometryTypeRule:module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRule, 
  rankByMinVisibleLodRule:module$exports$eeapiclient$ee_api_client.RankByMinVisibleLodRule, rankByMinZoomLevelRule:module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRule}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.RankByOneThingRule.prototype, {direction:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("direction") ? this.Serializable$get("direction") : null;
}, set:function(value) {
  this.Serializable$set("direction", value);
}}, rankByAttributeRule:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("rankByAttributeRule") ? this.Serializable$get("rankByAttributeRule") : null;
}, set:function(value) {
  this.Serializable$set("rankByAttributeRule", value);
}}, rankByGeometryTypeRule:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("rankByGeometryTypeRule") ? this.Serializable$get("rankByGeometryTypeRule") : null;
}, set:function(value) {
  this.Serializable$set("rankByGeometryTypeRule", value);
}}, rankByMinVisibleLodRule:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("rankByMinVisibleLodRule") ? this.Serializable$get("rankByMinVisibleLodRule") : null;
}, set:function(value) {
  this.Serializable$set("rankByMinVisibleLodRule", value);
}}, rankByMinZoomLevelRule:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("rankByMinZoomLevelRule") ? this.Serializable$get("rankByMinZoomLevelRule") : null;
}, set:function(value) {
  this.Serializable$set("rankByMinZoomLevelRule", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.RankByOneThingRule, {Direction:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.RankByOneThingRuleDirectionEnum;
}}});
module$exports$eeapiclient$ee_api_client.RankingOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.RankingOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("zOrderRankingRule", null == parameters.zOrderRankingRule ? null : parameters.zOrderRankingRule);
  this.Serializable$set("thinningRankingRule", null == parameters.thinningRankingRule ? null : parameters.thinningRankingRule);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.RankingOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.RankingOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.RankingOptions;
};
module$exports$eeapiclient$ee_api_client.RankingOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["thinningRankingRule", "zOrderRankingRule"], objects:{thinningRankingRule:module$exports$eeapiclient$ee_api_client.RankingRule, zOrderRankingRule:module$exports$eeapiclient$ee_api_client.RankingRule}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.RankingOptions.prototype, {thinningRankingRule:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("thinningRankingRule") ? this.Serializable$get("thinningRankingRule") : null;
}, set:function(value) {
  this.Serializable$set("thinningRankingRule", value);
}}, zOrderRankingRule:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("zOrderRankingRule") ? this.Serializable$get("zOrderRankingRule") : null;
}, set:function(value) {
  this.Serializable$set("zOrderRankingRule", value);
}}});
module$exports$eeapiclient$ee_api_client.RankingRuleParameters = function() {
};
module$exports$eeapiclient$ee_api_client.RankingRule = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("rankByOneThingRule", null == parameters.rankByOneThingRule ? null : parameters.rankByOneThingRule);
  this.Serializable$set("pseudoRandomTiebreaking", null == parameters.pseudoRandomTiebreaking ? null : parameters.pseudoRandomTiebreaking);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.RankingRule, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.RankingRule.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.RankingRule;
};
module$exports$eeapiclient$ee_api_client.RankingRule.prototype.getPartialClassMetadata = function() {
  return {arrays:{rankByOneThingRule:module$exports$eeapiclient$ee_api_client.RankByOneThingRule}, keys:["pseudoRandomTiebreaking", "rankByOneThingRule"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.RankingRule.prototype, {pseudoRandomTiebreaking:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pseudoRandomTiebreaking") ? this.Serializable$get("pseudoRandomTiebreaking") : null;
}, set:function(value) {
  this.Serializable$set("pseudoRandomTiebreaking", value);
}}, rankByOneThingRule:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("rankByOneThingRule") ? this.Serializable$get("rankByOneThingRule") : null;
}, set:function(value) {
  this.Serializable$set("rankByOneThingRule", value);
}}});
module$exports$eeapiclient$ee_api_client.RuleParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Rule = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("description", null == parameters.description ? null : parameters.description);
  this.Serializable$set("permissions", null == parameters.permissions ? null : parameters.permissions);
  this.Serializable$set("action", null == parameters.action ? null : parameters.action);
  this.Serializable$set("in", null == parameters.in ? null : parameters.in);
  this.Serializable$set("notIn", null == parameters.notIn ? null : parameters.notIn);
  this.Serializable$set("conditions", null == parameters.conditions ? null : parameters.conditions);
  this.Serializable$set("logConfig", null == parameters.logConfig ? null : parameters.logConfig);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Rule, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Rule.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Rule;
};
module$exports$eeapiclient$ee_api_client.Rule.prototype.getPartialClassMetadata = function() {
  return {arrays:{conditions:module$exports$eeapiclient$ee_api_client.Condition, logConfig:module$exports$eeapiclient$ee_api_client.LogConfig}, enums:{action:module$exports$eeapiclient$ee_api_client.RuleActionEnum}, keys:"action conditions description in logConfig notIn permissions".split(" ")};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Rule.prototype, {action:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("action") ? this.Serializable$get("action") : null;
}, set:function(value) {
  this.Serializable$set("action", value);
}}, conditions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("conditions") ? this.Serializable$get("conditions") : null;
}, set:function(value) {
  this.Serializable$set("conditions", value);
}}, description:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("description") ? this.Serializable$get("description") : null;
}, set:function(value) {
  this.Serializable$set("description", value);
}}, in:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("in") ? this.Serializable$get("in") : null;
}, set:function(value) {
  this.Serializable$set("in", value);
}}, logConfig:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("logConfig") ? this.Serializable$get("logConfig") : null;
}, set:function(value) {
  this.Serializable$set("logConfig", value);
}}, notIn:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("notIn") ? this.Serializable$get("notIn") : null;
}, set:function(value) {
  this.Serializable$set("notIn", value);
}}, permissions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("permissions") ? this.Serializable$get("permissions") : null;
}, set:function(value) {
  this.Serializable$set("permissions", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Rule, {Action:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.RuleActionEnum;
}}});
module$exports$eeapiclient$ee_api_client.ScheduledUpdateParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ScheduledUpdate = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("subscriptionUpdateType", null == parameters.subscriptionUpdateType ? null : parameters.subscriptionUpdateType);
  this.Serializable$set("updateChangeType", null == parameters.updateChangeType ? null : parameters.updateChangeType);
  this.Serializable$set("updateTime", null == parameters.updateTime ? null : parameters.updateTime);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ScheduledUpdate, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ScheduledUpdate.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ScheduledUpdate;
};
module$exports$eeapiclient$ee_api_client.ScheduledUpdate.prototype.getPartialClassMetadata = function() {
  return {enums:{subscriptionUpdateType:module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum, updateChangeType:module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum}, keys:["subscriptionUpdateType", "updateChangeType", "updateTime"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ScheduledUpdate.prototype, {subscriptionUpdateType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("subscriptionUpdateType") ? this.Serializable$get("subscriptionUpdateType") : null;
}, set:function(value) {
  this.Serializable$set("subscriptionUpdateType", value);
}}, updateChangeType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("updateChangeType") ? this.Serializable$get("updateChangeType") : null;
}, set:function(value) {
  this.Serializable$set("updateChangeType", value);
}}, updateTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("updateTime") ? this.Serializable$get("updateTime") : null;
}, set:function(value) {
  this.Serializable$set("updateTime", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ScheduledUpdate, {SubscriptionUpdateType:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ScheduledUpdateSubscriptionUpdateTypeEnum;
}}, UpdateChangeType:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ScheduledUpdateUpdateChangeTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.SetIamPolicyRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("policy", null == parameters.policy ? null : parameters.policy);
  this.Serializable$set("updateMask", null == parameters.updateMask ? null : parameters.updateMask);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest;
};
module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["policy", "updateMask"], objects:{policy:module$exports$eeapiclient$ee_api_client.Policy}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest.prototype, {policy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("policy") ? this.Serializable$get("policy") : null;
}, set:function(value) {
  this.Serializable$set("policy", value);
}}, updateMask:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("updateMask") ? this.Serializable$get("updateMask") : null;
}, set:function(value) {
  this.Serializable$set("updateMask", value);
}}});
module$exports$eeapiclient$ee_api_client.StatusParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Status = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("code", null == parameters.code ? null : parameters.code);
  this.Serializable$set("message", null == parameters.message ? null : parameters.message);
  this.Serializable$set("details", null == parameters.details ? null : parameters.details);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Status, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Status.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Status;
};
module$exports$eeapiclient$ee_api_client.Status.prototype.getPartialClassMetadata = function() {
  return {keys:["code", "details", "message"], objectMaps:{details:{ctor:null, isPropertyArray:!0, isSerializable:!1, isValueArray:!1}}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Status.prototype, {code:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("code") ? this.Serializable$get("code") : null;
}, set:function(value) {
  this.Serializable$set("code", value);
}}, details:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("details") ? this.Serializable$get("details") : null;
}, set:function(value) {
  this.Serializable$set("details", value);
}}, message:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("message") ? this.Serializable$get("message") : null;
}, set:function(value) {
  this.Serializable$set("message", value);
}}});
module$exports$eeapiclient$ee_api_client.SubscriptionParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Subscription = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("etag", null == parameters.etag ? null : parameters.etag);
  this.Serializable$set("type", null == parameters.type ? null : parameters.type);
  this.Serializable$set("state", null == parameters.state ? null : parameters.state);
  this.Serializable$set("creationTime", null == parameters.creationTime ? null : parameters.creationTime);
  this.Serializable$set("startTime", null == parameters.startTime ? null : parameters.startTime);
  this.Serializable$set("periodEndTime", null == parameters.periodEndTime ? null : parameters.periodEndTime);
  this.Serializable$set("endTime", null == parameters.endTime ? null : parameters.endTime);
  this.Serializable$set("scheduledUpdate", null == parameters.scheduledUpdate ? null : parameters.scheduledUpdate);
  this.Serializable$set("trialState", null == parameters.trialState ? null : parameters.trialState);
  this.Serializable$set("errorDetail", null == parameters.errorDetail ? null : parameters.errorDetail);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Subscription, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Subscription.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Subscription;
};
module$exports$eeapiclient$ee_api_client.Subscription.prototype.getPartialClassMetadata = function() {
  return {enums:{state:module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum, trialState:module$exports$eeapiclient$ee_api_client.SubscriptionTrialStateEnum, type:module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum}, keys:"creationTime endTime errorDetail etag name periodEndTime scheduledUpdate startTime state trialState type".split(" "), objects:{scheduledUpdate:module$exports$eeapiclient$ee_api_client.ScheduledUpdate}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Subscription.prototype, {creationTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("creationTime") ? this.Serializable$get("creationTime") : null;
}, set:function(value) {
  this.Serializable$set("creationTime", value);
}}, endTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("endTime") ? this.Serializable$get("endTime") : null;
}, set:function(value) {
  this.Serializable$set("endTime", value);
}}, errorDetail:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("errorDetail") ? this.Serializable$get("errorDetail") : null;
}, set:function(value) {
  this.Serializable$set("errorDetail", value);
}}, etag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("etag") ? this.Serializable$get("etag") : null;
}, set:function(value) {
  this.Serializable$set("etag", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, periodEndTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("periodEndTime") ? this.Serializable$get("periodEndTime") : null;
}, set:function(value) {
  this.Serializable$set("periodEndTime", value);
}}, scheduledUpdate:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("scheduledUpdate") ? this.Serializable$get("scheduledUpdate") : null;
}, set:function(value) {
  this.Serializable$set("scheduledUpdate", value);
}}, startTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("startTime") ? this.Serializable$get("startTime") : null;
}, set:function(value) {
  this.Serializable$set("startTime", value);
}}, state:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("state") ? this.Serializable$get("state") : null;
}, set:function(value) {
  this.Serializable$set("state", value);
}}, trialState:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("trialState") ? this.Serializable$get("trialState") : null;
}, set:function(value) {
  this.Serializable$set("trialState", value);
}}, type:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("type") ? this.Serializable$get("type") : null;
}, set:function(value) {
  this.Serializable$set("type", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Subscription, {State:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.SubscriptionStateEnum;
}}, TrialState:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.SubscriptionTrialStateEnum;
}}, Type:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.SubscriptionTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.TableParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Table = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
  this.Serializable$set("selectors", null == parameters.selectors ? null : parameters.selectors);
  this.Serializable$set("filename", null == parameters.filename ? null : parameters.filename);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Table, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Table.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Table;
};
module$exports$eeapiclient$ee_api_client.Table.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.TableFileFormatEnum}, keys:["expression", "fileFormat", "filename", "name", "selectors"], objects:{expression:module$exports$eeapiclient$ee_api_client.Expression}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Table.prototype, {expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, filename:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("filename") ? this.Serializable$get("filename") : null;
}, set:function(value) {
  this.Serializable$set("filename", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, selectors:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("selectors") ? this.Serializable$get("selectors") : null;
}, set:function(value) {
  this.Serializable$set("selectors", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Table, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TableFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.TableAssetExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TableAssetExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("earthEngineDestination", null == parameters.earthEngineDestination ? null : parameters.earthEngineDestination);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TableAssetExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TableAssetExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TableAssetExportOptions;
};
module$exports$eeapiclient$ee_api_client.TableAssetExportOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["earthEngineDestination"], objects:{earthEngineDestination:module$exports$eeapiclient$ee_api_client.EarthEngineDestination}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TableAssetExportOptions.prototype, {earthEngineDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("earthEngineDestination") ? this.Serializable$get("earthEngineDestination") : null;
}, set:function(value) {
  this.Serializable$set("earthEngineDestination", value);
}}});
module$exports$eeapiclient$ee_api_client.TableFileExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TableFileExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("driveDestination", null == parameters.driveDestination ? null : parameters.driveDestination);
  this.Serializable$set("cloudStorageDestination", null == parameters.cloudStorageDestination ? null : parameters.cloudStorageDestination);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TableFileExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TableFileExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TableFileExportOptions;
};
module$exports$eeapiclient$ee_api_client.TableFileExportOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum}, keys:["cloudStorageDestination", "driveDestination", "fileFormat"], objects:{cloudStorageDestination:module$exports$eeapiclient$ee_api_client.CloudStorageDestination, driveDestination:module$exports$eeapiclient$ee_api_client.DriveDestination}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TableFileExportOptions.prototype, {cloudStorageDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("cloudStorageDestination") ? this.Serializable$get("cloudStorageDestination") : null;
}, set:function(value) {
  this.Serializable$set("cloudStorageDestination", value);
}}, driveDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("driveDestination") ? this.Serializable$get("driveDestination") : null;
}, set:function(value) {
  this.Serializable$set("driveDestination", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TableFileExportOptions, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TableFileExportOptionsFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.TableLocationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TableLocation = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("paths", null == parameters.paths ? null : parameters.paths);
  this.Serializable$set("sizeBytes", null == parameters.sizeBytes ? null : parameters.sizeBytes);
  this.Serializable$set("shardCount", null == parameters.shardCount ? null : parameters.shardCount);
  this.Serializable$set("primaryGeometryColumn", null == parameters.primaryGeometryColumn ? null : parameters.primaryGeometryColumn);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TableLocation, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TableLocation.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TableLocation;
};
module$exports$eeapiclient$ee_api_client.TableLocation.prototype.getPartialClassMetadata = function() {
  return {keys:["paths", "primaryGeometryColumn", "shardCount", "sizeBytes"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TableLocation.prototype, {paths:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("paths") ? this.Serializable$get("paths") : null;
}, set:function(value) {
  this.Serializable$set("paths", value);
}}, primaryGeometryColumn:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("primaryGeometryColumn") ? this.Serializable$get("primaryGeometryColumn") : null;
}, set:function(value) {
  this.Serializable$set("primaryGeometryColumn", value);
}}, shardCount:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("shardCount") ? this.Serializable$get("shardCount") : null;
}, set:function(value) {
  this.Serializable$set("shardCount", value);
}}, sizeBytes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sizeBytes") ? this.Serializable$get("sizeBytes") : null;
}, set:function(value) {
  this.Serializable$set("sizeBytes", value);
}}});
module$exports$eeapiclient$ee_api_client.TableManifestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TableManifest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("properties", null == parameters.properties ? null : parameters.properties);
  this.Serializable$set("uriPrefix", null == parameters.uriPrefix ? null : parameters.uriPrefix);
  this.Serializable$set("sources", null == parameters.sources ? null : parameters.sources);
  this.Serializable$set("startTime", null == parameters.startTime ? null : parameters.startTime);
  this.Serializable$set("endTime", null == parameters.endTime ? null : parameters.endTime);
  this.Serializable$set("csvColumnDataTypeOverrides", null == parameters.csvColumnDataTypeOverrides ? null : parameters.csvColumnDataTypeOverrides);
  this.Serializable$set("policy", null == parameters.policy ? null : parameters.policy);
  this.Serializable$set("columnDataTypeOverrides", null == parameters.columnDataTypeOverrides ? null : parameters.columnDataTypeOverrides);
  this.Serializable$set("memo", null == parameters.memo ? null : parameters.memo);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TableManifest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TableManifest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TableManifest;
};
module$exports$eeapiclient$ee_api_client.TableManifest.prototype.getPartialClassMetadata = function() {
  return {arrays:{sources:module$exports$eeapiclient$ee_api_client.TableSource}, enums:{columnDataTypeOverrides:module$exports$eeapiclient$ee_api_client.TableManifestColumnDataTypeOverridesEnum, csvColumnDataTypeOverrides:module$exports$eeapiclient$ee_api_client.TableManifestCsvColumnDataTypeOverridesEnum}, keys:"columnDataTypeOverrides csvColumnDataTypeOverrides endTime memo name policy properties sources startTime uriPrefix".split(" "), 
  objectMaps:{columnDataTypeOverrides:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}, csvColumnDataTypeOverrides:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}, properties:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}}, objects:{policy:module$exports$eeapiclient$ee_api_client.Policy}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TableManifest.prototype, {columnDataTypeOverrides:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("columnDataTypeOverrides") ? this.Serializable$get("columnDataTypeOverrides") : null;
}, set:function(value) {
  this.Serializable$set("columnDataTypeOverrides", value);
}}, csvColumnDataTypeOverrides:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("csvColumnDataTypeOverrides") ? this.Serializable$get("csvColumnDataTypeOverrides") : null;
}, set:function(value) {
  this.Serializable$set("csvColumnDataTypeOverrides", value);
}}, endTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("endTime") ? this.Serializable$get("endTime") : null;
}, set:function(value) {
  this.Serializable$set("endTime", value);
}}, memo:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("memo") ? this.Serializable$get("memo") : null;
}, set:function(value) {
  this.Serializable$set("memo", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, policy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("policy") ? this.Serializable$get("policy") : null;
}, set:function(value) {
  this.Serializable$set("policy", value);
}}, properties:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("properties") ? this.Serializable$get("properties") : null;
}, set:function(value) {
  this.Serializable$set("properties", value);
}}, sources:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sources") ? this.Serializable$get("sources") : null;
}, set:function(value) {
  this.Serializable$set("sources", value);
}}, startTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("startTime") ? this.Serializable$get("startTime") : null;
}, set:function(value) {
  this.Serializable$set("startTime", value);
}}, uriPrefix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("uriPrefix") ? this.Serializable$get("uriPrefix") : null;
}, set:function(value) {
  this.Serializable$set("uriPrefix", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TableManifest, {ColumnDataTypeOverrides:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TableManifestColumnDataTypeOverridesEnum;
}}, CsvColumnDataTypeOverrides:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TableManifestCsvColumnDataTypeOverridesEnum;
}}});
module$exports$eeapiclient$ee_api_client.TableSourceParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TableSource = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("uris", null == parameters.uris ? null : parameters.uris);
  this.Serializable$set("charset", null == parameters.charset ? null : parameters.charset);
  this.Serializable$set("maxErrorMeters", null == parameters.maxErrorMeters ? null : parameters.maxErrorMeters);
  this.Serializable$set("maxVertices", null == parameters.maxVertices ? null : parameters.maxVertices);
  this.Serializable$set("crs", null == parameters.crs ? null : parameters.crs);
  this.Serializable$set("geodesic", null == parameters.geodesic ? null : parameters.geodesic);
  this.Serializable$set("primaryGeometryColumn", null == parameters.primaryGeometryColumn ? null : parameters.primaryGeometryColumn);
  this.Serializable$set("xColumn", null == parameters.xColumn ? null : parameters.xColumn);
  this.Serializable$set("yColumn", null == parameters.yColumn ? null : parameters.yColumn);
  this.Serializable$set("dateFormat", null == parameters.dateFormat ? null : parameters.dateFormat);
  this.Serializable$set("csvDelimiter", null == parameters.csvDelimiter ? null : parameters.csvDelimiter);
  this.Serializable$set("csvQualifier", null == parameters.csvQualifier ? null : parameters.csvQualifier);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TableSource, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TableSource.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TableSource;
};
module$exports$eeapiclient$ee_api_client.TableSource.prototype.getPartialClassMetadata = function() {
  return {keys:"charset crs csvDelimiter csvQualifier dateFormat geodesic maxErrorMeters maxVertices primaryGeometryColumn uris xColumn yColumn".split(" ")};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TableSource.prototype, {charset:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("charset") ? this.Serializable$get("charset") : null;
}, set:function(value) {
  this.Serializable$set("charset", value);
}}, crs:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("crs") ? this.Serializable$get("crs") : null;
}, set:function(value) {
  this.Serializable$set("crs", value);
}}, csvDelimiter:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("csvDelimiter") ? this.Serializable$get("csvDelimiter") : null;
}, set:function(value) {
  this.Serializable$set("csvDelimiter", value);
}}, csvQualifier:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("csvQualifier") ? this.Serializable$get("csvQualifier") : null;
}, set:function(value) {
  this.Serializable$set("csvQualifier", value);
}}, dateFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dateFormat") ? this.Serializable$get("dateFormat") : null;
}, set:function(value) {
  this.Serializable$set("dateFormat", value);
}}, geodesic:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("geodesic") ? this.Serializable$get("geodesic") : null;
}, set:function(value) {
  this.Serializable$set("geodesic", value);
}}, maxErrorMeters:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxErrorMeters") ? this.Serializable$get("maxErrorMeters") : null;
}, set:function(value) {
  this.Serializable$set("maxErrorMeters", value);
}}, maxVertices:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxVertices") ? this.Serializable$get("maxVertices") : null;
}, set:function(value) {
  this.Serializable$set("maxVertices", value);
}}, primaryGeometryColumn:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("primaryGeometryColumn") ? this.Serializable$get("primaryGeometryColumn") : null;
}, set:function(value) {
  this.Serializable$set("primaryGeometryColumn", value);
}}, uris:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("uris") ? this.Serializable$get("uris") : null;
}, set:function(value) {
  this.Serializable$set("uris", value);
}}, xColumn:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("xColumn") ? this.Serializable$get("xColumn") : null;
}, set:function(value) {
  this.Serializable$set("xColumn", value);
}}, yColumn:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("yColumn") ? this.Serializable$get("yColumn") : null;
}, set:function(value) {
  this.Serializable$set("yColumn", value);
}}});
module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("terminationType", null == parameters.terminationType ? null : parameters.terminationType);
  this.Serializable$set("etag", null == parameters.etag ? null : parameters.etag);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequest;
};
module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequest.prototype.getPartialClassMetadata = function() {
  return {enums:{terminationType:module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum}, keys:["etag", "terminationType"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequest.prototype, {etag:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("etag") ? this.Serializable$get("etag") : null;
}, set:function(value) {
  this.Serializable$set("etag", value);
}}, terminationType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("terminationType") ? this.Serializable$get("terminationType") : null;
}, set:function(value) {
  this.Serializable$set("terminationType", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequest, {TerminationType:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TerminateSubscriptionRequestTerminationTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.TestIamPermissionsRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TestIamPermissionsRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("permissions", null == parameters.permissions ? null : parameters.permissions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TestIamPermissionsRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TestIamPermissionsRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TestIamPermissionsRequest;
};
module$exports$eeapiclient$ee_api_client.TestIamPermissionsRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["permissions"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TestIamPermissionsRequest.prototype, {permissions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("permissions") ? this.Serializable$get("permissions") : null;
}, set:function(value) {
  this.Serializable$set("permissions", value);
}}});
module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponseParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponse = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("permissions", null == parameters.permissions ? null : parameters.permissions);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponse, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponse.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponse;
};
module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponse.prototype.getPartialClassMetadata = function() {
  return {keys:["permissions"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponse.prototype, {permissions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("permissions") ? this.Serializable$get("permissions") : null;
}, set:function(value) {
  this.Serializable$set("permissions", value);
}}});
module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("tileDimensions", null == parameters.tileDimensions ? null : parameters.tileDimensions);
  this.Serializable$set("marginDimensions", null == parameters.marginDimensions ? null : parameters.marginDimensions);
  this.Serializable$set("compress", null == parameters.compress ? null : parameters.compress);
  this.Serializable$set("maxSizeBytes", null == parameters.maxSizeBytes ? null : parameters.maxSizeBytes);
  this.Serializable$set("defaultValue", null == parameters.defaultValue ? null : parameters.defaultValue);
  this.Serializable$set("tensorDepths", null == parameters.tensorDepths ? null : parameters.tensorDepths);
  this.Serializable$set("sequenceData", null == parameters.sequenceData ? null : parameters.sequenceData);
  this.Serializable$set("collapseBands", null == parameters.collapseBands ? null : parameters.collapseBands);
  this.Serializable$set("maxMaskedRatio", null == parameters.maxMaskedRatio ? null : parameters.maxMaskedRatio);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions;
};
module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions.prototype.getPartialClassMetadata = function() {
  return {keys:"collapseBands compress defaultValue marginDimensions maxMaskedRatio maxSizeBytes sequenceData tensorDepths tileDimensions".split(" "), objectMaps:{tensorDepths:{ctor:null, isPropertyArray:!1, isSerializable:!1, isValueArray:!1}}, objects:{marginDimensions:module$exports$eeapiclient$ee_api_client.GridDimensions, tileDimensions:module$exports$eeapiclient$ee_api_client.GridDimensions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions.prototype, {collapseBands:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("collapseBands") ? this.Serializable$get("collapseBands") : null;
}, set:function(value) {
  this.Serializable$set("collapseBands", value);
}}, compress:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("compress") ? this.Serializable$get("compress") : null;
}, set:function(value) {
  this.Serializable$set("compress", value);
}}, defaultValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("defaultValue") ? this.Serializable$get("defaultValue") : null;
}, set:function(value) {
  this.Serializable$set("defaultValue", value);
}}, marginDimensions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("marginDimensions") ? this.Serializable$get("marginDimensions") : null;
}, set:function(value) {
  this.Serializable$set("marginDimensions", value);
}}, maxMaskedRatio:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxMaskedRatio") ? this.Serializable$get("maxMaskedRatio") : null;
}, set:function(value) {
  this.Serializable$set("maxMaskedRatio", value);
}}, maxSizeBytes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxSizeBytes") ? this.Serializable$get("maxSizeBytes") : null;
}, set:function(value) {
  this.Serializable$set("maxSizeBytes", value);
}}, sequenceData:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sequenceData") ? this.Serializable$get("sequenceData") : null;
}, set:function(value) {
  this.Serializable$set("sequenceData", value);
}}, tensorDepths:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tensorDepths") ? this.Serializable$get("tensorDepths") : null;
}, set:function(value) {
  this.Serializable$set("tensorDepths", value);
}}, tileDimensions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tileDimensions") ? this.Serializable$get("tileDimensions") : null;
}, set:function(value) {
  this.Serializable$set("tileDimensions", value);
}}});
module$exports$eeapiclient$ee_api_client.ThinningOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ThinningOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("maxFeaturesPerTile", null == parameters.maxFeaturesPerTile ? null : parameters.maxFeaturesPerTile);
  this.Serializable$set("thinningStrategy", null == parameters.thinningStrategy ? null : parameters.thinningStrategy);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ThinningOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ThinningOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ThinningOptions;
};
module$exports$eeapiclient$ee_api_client.ThinningOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{thinningStrategy:module$exports$eeapiclient$ee_api_client.ThinningOptionsThinningStrategyEnum}, keys:["maxFeaturesPerTile", "thinningStrategy"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ThinningOptions.prototype, {maxFeaturesPerTile:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxFeaturesPerTile") ? this.Serializable$get("maxFeaturesPerTile") : null;
}, set:function(value) {
  this.Serializable$set("maxFeaturesPerTile", value);
}}, thinningStrategy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("thinningStrategy") ? this.Serializable$get("thinningStrategy") : null;
}, set:function(value) {
  this.Serializable$set("thinningStrategy", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ThinningOptions, {ThinningStrategy:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ThinningOptionsThinningStrategyEnum;
}}});
module$exports$eeapiclient$ee_api_client.ThumbnailParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Thumbnail = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
  this.Serializable$set("bandIds", null == parameters.bandIds ? null : parameters.bandIds);
  this.Serializable$set("visualizationOptions", null == parameters.visualizationOptions ? null : parameters.visualizationOptions);
  this.Serializable$set("grid", null == parameters.grid ? null : parameters.grid);
  this.Serializable$set("filenamePrefix", null == parameters.filenamePrefix ? null : parameters.filenamePrefix);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Thumbnail, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Thumbnail.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Thumbnail;
};
module$exports$eeapiclient$ee_api_client.Thumbnail.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum}, keys:"bandIds expression fileFormat filenamePrefix grid name visualizationOptions".split(" "), objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, grid:module$exports$eeapiclient$ee_api_client.PixelGrid, visualizationOptions:module$exports$eeapiclient$ee_api_client.VisualizationOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Thumbnail.prototype, {bandIds:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bandIds") ? this.Serializable$get("bandIds") : null;
}, set:function(value) {
  this.Serializable$set("bandIds", value);
}}, expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, filenamePrefix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("filenamePrefix") ? this.Serializable$get("filenamePrefix") : null;
}, set:function(value) {
  this.Serializable$set("filenamePrefix", value);
}}, grid:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("grid") ? this.Serializable$get("grid") : null;
}, set:function(value) {
  this.Serializable$set("grid", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, visualizationOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("visualizationOptions") ? this.Serializable$get("visualizationOptions") : null;
}, set:function(value) {
  this.Serializable$set("visualizationOptions", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Thumbnail, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.ThumbnailFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.TileLimitingParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TileLimiting = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("maxPrerenderZoom", null == parameters.maxPrerenderZoom ? null : parameters.maxPrerenderZoom);
  this.Serializable$set("minVerticesPerTile", null == parameters.minVerticesPerTile ? null : parameters.minVerticesPerTile);
  this.Serializable$set("neighborDepth", null == parameters.neighborDepth ? null : parameters.neighborDepth);
  this.Serializable$set("minFeaturesPerTile", null == parameters.minFeaturesPerTile ? null : parameters.minFeaturesPerTile);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TileLimiting, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TileLimiting.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TileLimiting;
};
module$exports$eeapiclient$ee_api_client.TileLimiting.prototype.getPartialClassMetadata = function() {
  return {keys:["maxPrerenderZoom", "minFeaturesPerTile", "minVerticesPerTile", "neighborDepth"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TileLimiting.prototype, {maxPrerenderZoom:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxPrerenderZoom") ? this.Serializable$get("maxPrerenderZoom") : null;
}, set:function(value) {
  this.Serializable$set("maxPrerenderZoom", value);
}}, minFeaturesPerTile:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("minFeaturesPerTile") ? this.Serializable$get("minFeaturesPerTile") : null;
}, set:function(value) {
  this.Serializable$set("minFeaturesPerTile", value);
}}, minVerticesPerTile:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("minVerticesPerTile") ? this.Serializable$get("minVerticesPerTile") : null;
}, set:function(value) {
  this.Serializable$set("minVerticesPerTile", value);
}}, neighborDepth:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("neighborDepth") ? this.Serializable$get("neighborDepth") : null;
}, set:function(value) {
  this.Serializable$set("neighborDepth", value);
}}});
module$exports$eeapiclient$ee_api_client.TileOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TileOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("endZoom", null == parameters.endZoom ? null : parameters.endZoom);
  this.Serializable$set("scale", null == parameters.scale ? null : parameters.scale);
  this.Serializable$set("startZoom", null == parameters.startZoom ? null : parameters.startZoom);
  this.Serializable$set("skipEmpty", null == parameters.skipEmpty ? null : parameters.skipEmpty);
  this.Serializable$set("mapsApiKey", null == parameters.mapsApiKey ? null : parameters.mapsApiKey);
  this.Serializable$set("dimensions", null == parameters.dimensions ? null : parameters.dimensions);
  this.Serializable$set("stride", null == parameters.stride ? null : parameters.stride);
  this.Serializable$set("zoomSubset", null == parameters.zoomSubset ? null : parameters.zoomSubset);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TileOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TileOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TileOptions;
};
module$exports$eeapiclient$ee_api_client.TileOptions.prototype.getPartialClassMetadata = function() {
  return {keys:"dimensions endZoom mapsApiKey scale skipEmpty startZoom stride zoomSubset".split(" "), objects:{dimensions:module$exports$eeapiclient$ee_api_client.GridDimensions, zoomSubset:module$exports$eeapiclient$ee_api_client.ZoomSubset}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TileOptions.prototype, {dimensions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dimensions") ? this.Serializable$get("dimensions") : null;
}, set:function(value) {
  this.Serializable$set("dimensions", value);
}}, endZoom:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("endZoom") ? this.Serializable$get("endZoom") : null;
}, set:function(value) {
  this.Serializable$set("endZoom", value);
}}, mapsApiKey:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("mapsApiKey") ? this.Serializable$get("mapsApiKey") : null;
}, set:function(value) {
  this.Serializable$set("mapsApiKey", value);
}}, scale:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("scale") ? this.Serializable$get("scale") : null;
}, set:function(value) {
  this.Serializable$set("scale", value);
}}, skipEmpty:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("skipEmpty") ? this.Serializable$get("skipEmpty") : null;
}, set:function(value) {
  this.Serializable$set("skipEmpty", value);
}}, startZoom:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("startZoom") ? this.Serializable$get("startZoom") : null;
}, set:function(value) {
  this.Serializable$set("startZoom", value);
}}, stride:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("stride") ? this.Serializable$get("stride") : null;
}, set:function(value) {
  this.Serializable$set("stride", value);
}}, zoomSubset:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("zoomSubset") ? this.Serializable$get("zoomSubset") : null;
}, set:function(value) {
  this.Serializable$set("zoomSubset", value);
}}});
module$exports$eeapiclient$ee_api_client.TilesetParameters = function() {
};
module$exports$eeapiclient$ee_api_client.Tileset = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("id", null == parameters.id ? null : parameters.id);
  this.Serializable$set("sources", null == parameters.sources ? null : parameters.sources);
  this.Serializable$set("dataType", null == parameters.dataType ? null : parameters.dataType);
  this.Serializable$set("crs", null == parameters.crs ? null : parameters.crs);
  this.Serializable$set("subdatasetPrefix", null == parameters.subdatasetPrefix ? null : parameters.subdatasetPrefix);
  this.Serializable$set("subdatasetSuffix", null == parameters.subdatasetSuffix ? null : parameters.subdatasetSuffix);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.Tileset, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.Tileset.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.Tileset;
};
module$exports$eeapiclient$ee_api_client.Tileset.prototype.getPartialClassMetadata = function() {
  return {arrays:{sources:module$exports$eeapiclient$ee_api_client.ImageSource}, enums:{dataType:module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum}, keys:"crs dataType id sources subdatasetPrefix subdatasetSuffix".split(" ")};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Tileset.prototype, {crs:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("crs") ? this.Serializable$get("crs") : null;
}, set:function(value) {
  this.Serializable$set("crs", value);
}}, dataType:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dataType") ? this.Serializable$get("dataType") : null;
}, set:function(value) {
  this.Serializable$set("dataType", value);
}}, id:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("id") ? this.Serializable$get("id") : null;
}, set:function(value) {
  this.Serializable$set("id", value);
}}, sources:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sources") ? this.Serializable$get("sources") : null;
}, set:function(value) {
  this.Serializable$set("sources", value);
}}, subdatasetPrefix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("subdatasetPrefix") ? this.Serializable$get("subdatasetPrefix") : null;
}, set:function(value) {
  this.Serializable$set("subdatasetPrefix", value);
}}, subdatasetSuffix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("subdatasetSuffix") ? this.Serializable$get("subdatasetSuffix") : null;
}, set:function(value) {
  this.Serializable$set("subdatasetSuffix", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.Tileset, {DataType:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TilesetDataTypeEnum;
}}});
module$exports$eeapiclient$ee_api_client.TilesetBandParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TilesetBand = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("id", null == parameters.id ? null : parameters.id);
  this.Serializable$set("tilesetId", null == parameters.tilesetId ? null : parameters.tilesetId);
  this.Serializable$set("tilesetBandIndex", null == parameters.tilesetBandIndex ? null : parameters.tilesetBandIndex);
  this.Serializable$set("missingData", null == parameters.missingData ? null : parameters.missingData);
  this.Serializable$set("pyramidingPolicy", null == parameters.pyramidingPolicy ? null : parameters.pyramidingPolicy);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TilesetBand, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TilesetBand.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TilesetBand;
};
module$exports$eeapiclient$ee_api_client.TilesetBand.prototype.getPartialClassMetadata = function() {
  return {enums:{pyramidingPolicy:module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum}, keys:["id", "missingData", "pyramidingPolicy", "tilesetBandIndex", "tilesetId"], objects:{missingData:module$exports$eeapiclient$ee_api_client.MissingData}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TilesetBand.prototype, {id:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("id") ? this.Serializable$get("id") : null;
}, set:function(value) {
  this.Serializable$set("id", value);
}}, missingData:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("missingData") ? this.Serializable$get("missingData") : null;
}, set:function(value) {
  this.Serializable$set("missingData", value);
}}, pyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pyramidingPolicy") ? this.Serializable$get("pyramidingPolicy") : null;
}, set:function(value) {
  this.Serializable$set("pyramidingPolicy", value);
}}, tilesetBandIndex:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesetBandIndex") ? this.Serializable$get("tilesetBandIndex") : null;
}, set:function(value) {
  this.Serializable$set("tilesetBandIndex", value);
}}, tilesetId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesetId") ? this.Serializable$get("tilesetId") : null;
}, set:function(value) {
  this.Serializable$set("tilesetId", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TilesetBand, {PyramidingPolicy:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TilesetBandPyramidingPolicyEnum;
}}});
module$exports$eeapiclient$ee_api_client.TilesetMaskBandParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TilesetMaskBand = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("tilesetId", null == parameters.tilesetId ? null : parameters.tilesetId);
  this.Serializable$set("bandIds", null == parameters.bandIds ? null : parameters.bandIds);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TilesetMaskBand, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TilesetMaskBand.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TilesetMaskBand;
};
module$exports$eeapiclient$ee_api_client.TilesetMaskBand.prototype.getPartialClassMetadata = function() {
  return {keys:["bandIds", "tilesetId"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TilesetMaskBand.prototype, {bandIds:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bandIds") ? this.Serializable$get("bandIds") : null;
}, set:function(value) {
  this.Serializable$set("bandIds", value);
}}, tilesetId:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesetId") ? this.Serializable$get("tilesetId") : null;
}, set:function(value) {
  this.Serializable$set("tilesetId", value);
}}});
module$exports$eeapiclient$ee_api_client.TilestoreLocationParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TilestoreLocation = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("sources", null == parameters.sources ? null : parameters.sources);
  this.Serializable$set("pathPrefix", null == parameters.pathPrefix ? null : parameters.pathPrefix);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TilestoreLocation, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TilestoreLocation.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TilestoreLocation;
};
module$exports$eeapiclient$ee_api_client.TilestoreLocation.prototype.getPartialClassMetadata = function() {
  return {arrays:{sources:module$exports$eeapiclient$ee_api_client.TilestoreSource}, keys:["pathPrefix", "sources"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TilestoreLocation.prototype, {pathPrefix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pathPrefix") ? this.Serializable$get("pathPrefix") : null;
}, set:function(value) {
  this.Serializable$set("pathPrefix", value);
}}, sources:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("sources") ? this.Serializable$get("sources") : null;
}, set:function(value) {
  this.Serializable$set("sources", value);
}}});
module$exports$eeapiclient$ee_api_client.TilestoreSourceParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TilestoreSource = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("pathSuffix", null == parameters.pathSuffix ? null : parameters.pathSuffix);
  this.Serializable$set("headerSizeBytes", null == parameters.headerSizeBytes ? null : parameters.headerSizeBytes);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TilestoreSource, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TilestoreSource.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TilestoreSource;
};
module$exports$eeapiclient$ee_api_client.TilestoreSource.prototype.getPartialClassMetadata = function() {
  return {keys:["headerSizeBytes", "pathSuffix"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TilestoreSource.prototype, {headerSizeBytes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("headerSizeBytes") ? this.Serializable$get("headerSizeBytes") : null;
}, set:function(value) {
  this.Serializable$set("headerSizeBytes", value);
}}, pathSuffix:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("pathSuffix") ? this.Serializable$get("pathSuffix") : null;
}, set:function(value) {
  this.Serializable$set("pathSuffix", value);
}}});
module$exports$eeapiclient$ee_api_client.TilestoreTilesetParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TilestoreTileset = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("fileIndexes", null == parameters.fileIndexes ? null : parameters.fileIndexes);
  this.Serializable$set("firstTileIndex", null == parameters.firstTileIndex ? null : parameters.firstTileIndex);
  this.Serializable$set("tilesPerFile", null == parameters.tilesPerFile ? null : parameters.tilesPerFile);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TilestoreTileset, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TilestoreTileset.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TilestoreTileset;
};
module$exports$eeapiclient$ee_api_client.TilestoreTileset.prototype.getPartialClassMetadata = function() {
  return {keys:["fileIndexes", "firstTileIndex", "tilesPerFile"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TilestoreTileset.prototype, {fileIndexes:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileIndexes") ? this.Serializable$get("fileIndexes") : null;
}, set:function(value) {
  this.Serializable$set("fileIndexes", value);
}}, firstTileIndex:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("firstTileIndex") ? this.Serializable$get("firstTileIndex") : null;
}, set:function(value) {
  this.Serializable$set("firstTileIndex", value);
}}, tilesPerFile:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("tilesPerFile") ? this.Serializable$get("tilesPerFile") : null;
}, set:function(value) {
  this.Serializable$set("tilesPerFile", value);
}}});
module$exports$eeapiclient$ee_api_client.TrialStatusParameters = function() {
};
module$exports$eeapiclient$ee_api_client.TrialStatus = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("billingAccount", null == parameters.billingAccount ? null : parameters.billingAccount);
  this.Serializable$set("eligibility", null == parameters.eligibility ? null : parameters.eligibility);
  this.Serializable$set("state", null == parameters.state ? null : parameters.state);
  this.Serializable$set("startTime", null == parameters.startTime ? null : parameters.startTime);
  this.Serializable$set("expiryTime", null == parameters.expiryTime ? null : parameters.expiryTime);
  this.Serializable$set("subscription", null == parameters.subscription ? null : parameters.subscription);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.TrialStatus, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.TrialStatus.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.TrialStatus;
};
module$exports$eeapiclient$ee_api_client.TrialStatus.prototype.getPartialClassMetadata = function() {
  return {enums:{eligibility:module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum, state:module$exports$eeapiclient$ee_api_client.TrialStatusStateEnum}, keys:"billingAccount eligibility expiryTime startTime state subscription".split(" ")};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TrialStatus.prototype, {billingAccount:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("billingAccount") ? this.Serializable$get("billingAccount") : null;
}, set:function(value) {
  this.Serializable$set("billingAccount", value);
}}, eligibility:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("eligibility") ? this.Serializable$get("eligibility") : null;
}, set:function(value) {
  this.Serializable$set("eligibility", value);
}}, expiryTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expiryTime") ? this.Serializable$get("expiryTime") : null;
}, set:function(value) {
  this.Serializable$set("expiryTime", value);
}}, startTime:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("startTime") ? this.Serializable$get("startTime") : null;
}, set:function(value) {
  this.Serializable$set("startTime", value);
}}, state:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("state") ? this.Serializable$get("state") : null;
}, set:function(value) {
  this.Serializable$set("state", value);
}}, subscription:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("subscription") ? this.Serializable$get("subscription") : null;
}, set:function(value) {
  this.Serializable$set("subscription", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.TrialStatus, {Eligibility:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TrialStatusEligibilityEnum;
}}, State:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.TrialStatusStateEnum;
}}});
module$exports$eeapiclient$ee_api_client.UpdateAssetRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.UpdateAssetRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("asset", null == parameters.asset ? null : parameters.asset);
  this.Serializable$set("updateMask", null == parameters.updateMask ? null : parameters.updateMask);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.UpdateAssetRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.UpdateAssetRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.UpdateAssetRequest;
};
module$exports$eeapiclient$ee_api_client.UpdateAssetRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["asset", "updateMask"], objects:{asset:module$exports$eeapiclient$ee_api_client.EarthEngineAsset}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.UpdateAssetRequest.prototype, {asset:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("asset") ? this.Serializable$get("asset") : null;
}, set:function(value) {
  this.Serializable$set("asset", value);
}}, updateMask:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("updateMask") ? this.Serializable$get("updateMask") : null;
}, set:function(value) {
  this.Serializable$set("updateMask", value);
}}});
module$exports$eeapiclient$ee_api_client.ValueNodeParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ValueNode = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("constantValue", null == parameters.constantValue ? null : parameters.constantValue);
  this.Serializable$set("integerValue", null == parameters.integerValue ? null : parameters.integerValue);
  this.Serializable$set("bytesValue", null == parameters.bytesValue ? null : parameters.bytesValue);
  this.Serializable$set("arrayValue", null == parameters.arrayValue ? null : parameters.arrayValue);
  this.Serializable$set("dictionaryValue", null == parameters.dictionaryValue ? null : parameters.dictionaryValue);
  this.Serializable$set("functionDefinitionValue", null == parameters.functionDefinitionValue ? null : parameters.functionDefinitionValue);
  this.Serializable$set("functionInvocationValue", null == parameters.functionInvocationValue ? null : parameters.functionInvocationValue);
  this.Serializable$set("argumentReference", null == parameters.argumentReference ? null : parameters.argumentReference);
  this.Serializable$set("valueReference", null == parameters.valueReference ? null : parameters.valueReference);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ValueNode, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ValueNode.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ValueNode;
};
module$exports$eeapiclient$ee_api_client.ValueNode.prototype.getPartialClassMetadata = function() {
  return {keys:"argumentReference arrayValue bytesValue constantValue dictionaryValue functionDefinitionValue functionInvocationValue integerValue valueReference".split(" "), objects:{arrayValue:module$exports$eeapiclient$ee_api_client.ArrayValue, dictionaryValue:module$exports$eeapiclient$ee_api_client.DictionaryValue, functionDefinitionValue:module$exports$eeapiclient$ee_api_client.FunctionDefinition, 
  functionInvocationValue:module$exports$eeapiclient$ee_api_client.FunctionInvocation}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ValueNode.prototype, {argumentReference:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("argumentReference") ? this.Serializable$get("argumentReference") : null;
}, set:function(value) {
  this.Serializable$set("argumentReference", value);
}}, arrayValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("arrayValue") ? this.Serializable$get("arrayValue") : null;
}, set:function(value) {
  this.Serializable$set("arrayValue", value);
}}, bytesValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("bytesValue") ? this.Serializable$get("bytesValue") : null;
}, set:function(value) {
  this.Serializable$set("bytesValue", value);
}}, constantValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("constantValue") ? this.Serializable$get("constantValue") : null;
}, set:function(value) {
  this.Serializable$set("constantValue", value);
}}, dictionaryValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("dictionaryValue") ? this.Serializable$get("dictionaryValue") : null;
}, set:function(value) {
  this.Serializable$set("dictionaryValue", value);
}}, functionDefinitionValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("functionDefinitionValue") ? this.Serializable$get("functionDefinitionValue") : null;
}, set:function(value) {
  this.Serializable$set("functionDefinitionValue", value);
}}, functionInvocationValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("functionInvocationValue") ? this.Serializable$get("functionInvocationValue") : null;
}, set:function(value) {
  this.Serializable$set("functionInvocationValue", value);
}}, integerValue:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("integerValue") ? this.Serializable$get("integerValue") : null;
}, set:function(value) {
  this.Serializable$set("integerValue", value);
}}, valueReference:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("valueReference") ? this.Serializable$get("valueReference") : null;
}, set:function(value) {
  this.Serializable$set("valueReference", value);
}}});
module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.VideoFileExportOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("driveDestination", null == parameters.driveDestination ? null : parameters.driveDestination);
  this.Serializable$set("cloudStorageDestination", null == parameters.cloudStorageDestination ? null : parameters.cloudStorageDestination);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.VideoFileExportOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.VideoFileExportOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.VideoFileExportOptions;
};
module$exports$eeapiclient$ee_api_client.VideoFileExportOptions.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsFileFormatEnum}, keys:["cloudStorageDestination", "driveDestination", "fileFormat"], objects:{cloudStorageDestination:module$exports$eeapiclient$ee_api_client.CloudStorageDestination, driveDestination:module$exports$eeapiclient$ee_api_client.DriveDestination}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.VideoFileExportOptions.prototype, {cloudStorageDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("cloudStorageDestination") ? this.Serializable$get("cloudStorageDestination") : null;
}, set:function(value) {
  this.Serializable$set("cloudStorageDestination", value);
}}, driveDestination:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("driveDestination") ? this.Serializable$get("driveDestination") : null;
}, set:function(value) {
  this.Serializable$set("driveDestination", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.VideoFileExportOptions, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.VideoFileExportOptionsFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.VideoOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.VideoOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("framesPerSecond", null == parameters.framesPerSecond ? null : parameters.framesPerSecond);
  this.Serializable$set("maxFrames", null == parameters.maxFrames ? null : parameters.maxFrames);
  this.Serializable$set("maxPixelsPerFrame", null == parameters.maxPixelsPerFrame ? null : parameters.maxPixelsPerFrame);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.VideoOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.VideoOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.VideoOptions;
};
module$exports$eeapiclient$ee_api_client.VideoOptions.prototype.getPartialClassMetadata = function() {
  return {keys:["framesPerSecond", "maxFrames", "maxPixelsPerFrame"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.VideoOptions.prototype, {framesPerSecond:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("framesPerSecond") ? this.Serializable$get("framesPerSecond") : null;
}, set:function(value) {
  this.Serializable$set("framesPerSecond", value);
}}, maxFrames:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxFrames") ? this.Serializable$get("maxFrames") : null;
}, set:function(value) {
  this.Serializable$set("maxFrames", value);
}}, maxPixelsPerFrame:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("maxPixelsPerFrame") ? this.Serializable$get("maxPixelsPerFrame") : null;
}, set:function(value) {
  this.Serializable$set("maxPixelsPerFrame", value);
}}});
module$exports$eeapiclient$ee_api_client.VideoThumbnailParameters = function() {
};
module$exports$eeapiclient$ee_api_client.VideoThumbnail = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("name", null == parameters.name ? null : parameters.name);
  this.Serializable$set("expression", null == parameters.expression ? null : parameters.expression);
  this.Serializable$set("videoOptions", null == parameters.videoOptions ? null : parameters.videoOptions);
  this.Serializable$set("fileFormat", null == parameters.fileFormat ? null : parameters.fileFormat);
  this.Serializable$set("grid", null == parameters.grid ? null : parameters.grid);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.VideoThumbnail, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.VideoThumbnail.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.VideoThumbnail;
};
module$exports$eeapiclient$ee_api_client.VideoThumbnail.prototype.getPartialClassMetadata = function() {
  return {enums:{fileFormat:module$exports$eeapiclient$ee_api_client.VideoThumbnailFileFormatEnum}, keys:["expression", "fileFormat", "grid", "name", "videoOptions"], objects:{expression:module$exports$eeapiclient$ee_api_client.Expression, grid:module$exports$eeapiclient$ee_api_client.PixelGrid, videoOptions:module$exports$eeapiclient$ee_api_client.VideoOptions}};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.VideoThumbnail.prototype, {expression:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("expression") ? this.Serializable$get("expression") : null;
}, set:function(value) {
  this.Serializable$set("expression", value);
}}, fileFormat:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("fileFormat") ? this.Serializable$get("fileFormat") : null;
}, set:function(value) {
  this.Serializable$set("fileFormat", value);
}}, grid:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("grid") ? this.Serializable$get("grid") : null;
}, set:function(value) {
  this.Serializable$set("grid", value);
}}, name:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("name") ? this.Serializable$get("name") : null;
}, set:function(value) {
  this.Serializable$set("name", value);
}}, videoOptions:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("videoOptions") ? this.Serializable$get("videoOptions") : null;
}, set:function(value) {
  this.Serializable$set("videoOptions", value);
}}});
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.VideoThumbnail, {FileFormat:{configurable:!0, enumerable:!0, get:function() {
  return module$exports$eeapiclient$ee_api_client.VideoThumbnailFileFormatEnum;
}}});
module$exports$eeapiclient$ee_api_client.VisualizationOptionsParameters = function() {
};
module$exports$eeapiclient$ee_api_client.VisualizationOptions = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("ranges", null == parameters.ranges ? null : parameters.ranges);
  this.Serializable$set("paletteColors", null == parameters.paletteColors ? null : parameters.paletteColors);
  this.Serializable$set("gamma", null == parameters.gamma ? null : parameters.gamma);
  this.Serializable$set("opacity", null == parameters.opacity ? null : parameters.opacity);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.VisualizationOptions, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.VisualizationOptions.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.VisualizationOptions;
};
module$exports$eeapiclient$ee_api_client.VisualizationOptions.prototype.getPartialClassMetadata = function() {
  return {arrays:{ranges:module$exports$eeapiclient$ee_api_client.DoubleRange}, keys:["gamma", "opacity", "paletteColors", "ranges"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.VisualizationOptions.prototype, {gamma:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("gamma") ? this.Serializable$get("gamma") : null;
}, set:function(value) {
  this.Serializable$set("gamma", value);
}}, opacity:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("opacity") ? this.Serializable$get("opacity") : null;
}, set:function(value) {
  this.Serializable$set("opacity", value);
}}, paletteColors:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("paletteColors") ? this.Serializable$get("paletteColors") : null;
}, set:function(value) {
  this.Serializable$set("paletteColors", value);
}}, ranges:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("ranges") ? this.Serializable$get("ranges") : null;
}, set:function(value) {
  this.Serializable$set("ranges", value);
}}});
module$exports$eeapiclient$ee_api_client.WaitOperationRequestParameters = function() {
};
module$exports$eeapiclient$ee_api_client.WaitOperationRequest = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("timeout", null == parameters.timeout ? null : parameters.timeout);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.WaitOperationRequest, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.WaitOperationRequest.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.WaitOperationRequest;
};
module$exports$eeapiclient$ee_api_client.WaitOperationRequest.prototype.getPartialClassMetadata = function() {
  return {keys:["timeout"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.WaitOperationRequest.prototype, {timeout:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("timeout") ? this.Serializable$get("timeout") : null;
}, set:function(value) {
  this.Serializable$set("timeout", value);
}}});
module$exports$eeapiclient$ee_api_client.ZoomSubsetParameters = function() {
};
module$exports$eeapiclient$ee_api_client.ZoomSubset = function(parameters) {
  parameters = void 0 === parameters ? {} : parameters;
  module$exports$eeapiclient$domain_object.Serializable.call(this);
  this.Serializable$set("start", null == parameters.start ? null : parameters.start);
  this.Serializable$set("end", null == parameters.end ? null : parameters.end);
};
$jscomp.inherits(module$exports$eeapiclient$ee_api_client.ZoomSubset, module$exports$eeapiclient$domain_object.Serializable);
module$exports$eeapiclient$ee_api_client.ZoomSubset.prototype.getConstructor = function() {
  return module$exports$eeapiclient$ee_api_client.ZoomSubset;
};
module$exports$eeapiclient$ee_api_client.ZoomSubset.prototype.getPartialClassMetadata = function() {
  return {keys:["end", "start"]};
};
$jscomp.global.Object.defineProperties(module$exports$eeapiclient$ee_api_client.ZoomSubset.prototype, {end:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("end") ? this.Serializable$get("end") : null;
}, set:function(value) {
  this.Serializable$set("end", value);
}}, start:{configurable:!0, enumerable:!0, get:function() {
  return this.Serializable$has("start") ? this.Serializable$get("start") : null;
}, set:function(value) {
  this.Serializable$set("start", value);
}}});
var module$contents$eeapiclient$ee_api_client_PARAM_MAP_0 = {$Xgafv:"$.xgafv", access_token:"access_token", alt:"alt", assetId:"assetId", callback:"callback", fields:"fields", filter:"filter", key:"key", oauth_token:"oauth_token", overwrite:"overwrite", pageSize:"pageSize", pageToken:"pageToken", parent:"parent", prettyPrint:"prettyPrint", quotaUser:"quotaUser", region:"region", updateMask:"updateMask", uploadType:"uploadType", upload_protocol:"upload_protocol", 
view:"view", workloadTag:"workloadTag"};
module$exports$eeapiclient$ee_api_client.IBillingAccountsSubscriptionsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IBillingAccountsSubscriptionsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientImpl.prototype.changeType = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^billingAccounts/[^/]+/subscriptions/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.billingAccounts.subscriptions.changeType", path:"/" + this.gapiVersion + "/" + name + ":changeType", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Subscription});
};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^billingAccounts/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.billingAccounts.subscriptions.create", path:"/" + this.gapiVersion + "/" + parent + "/subscriptions", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Subscription});
};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientImpl.prototype.list = function(parent, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^billingAccounts/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.billingAccounts.subscriptions.list", path:"/" + this.gapiVersion + "/" + parent + "/subscriptions", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ListSubscriptionsResponse});
};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClientImpl.prototype.terminate = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^billingAccounts/[^/]+/subscriptions/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.billingAccounts.subscriptions.terminate", path:"/" + this.gapiVersion + "/" + name + ":terminate", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Subscription});
};
module$exports$eeapiclient$ee_api_client.BillingAccountsSubscriptionsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.ICapabilitiesApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.CapabilitiesApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.CapabilitiesApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.CapabilitiesApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.ICapabilitiesApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.CapabilitiesApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.CapabilitiesApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.CapabilitiesApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.CapabilitiesApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.CapabilitiesApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.CapabilitiesApiClientImpl.prototype.appealRestriction = function($requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.capabilities.appealRestriction", path:"/" + this.gapiVersion + "/capabilities:appealRestriction", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Empty});
};
module$exports$eeapiclient$ee_api_client.CapabilitiesApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsAlgorithmsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsAlgorithmsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClientImpl.prototype.list = function(parent, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.algorithms.list", path:"/" + this.gapiVersion + "/" + parent + "/algorithms", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ListAlgorithmsResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.IProjectsApiClientViewEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClientViewEnum = {BASIC:"BASIC", BASIC_SYNC:"BASIC_SYNC", EARTH_ENGINE_ASSET_VIEW_UNSPECIFIED:"EARTH_ENGINE_ASSET_VIEW_UNSPECIFIED", FULL:"FULL", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsApiClientViewEnum.EARTH_ENGINE_ASSET_VIEW_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ProjectsApiClientViewEnum.FULL, module$exports$eeapiclient$ee_api_client.ProjectsApiClientViewEnum.BASIC, module$exports$eeapiclient$ee_api_client.ProjectsApiClientViewEnum.BASIC_SYNC];
}};
module$exports$eeapiclient$ee_api_client.ProjectsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClientImpl.prototype.getCapabilities = function(parent, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.getCapabilities", path:"/" + this.gapiVersion + "/" + parent + "/capabilities", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Capabilities});
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClientImpl.prototype.getConfig = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/config$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.getConfig", path:"/" + this.gapiVersion + "/" + name, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ProjectConfig});
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClientImpl.prototype.listAssets = function(parent, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.listAssets", path:"/" + this.gapiVersion + "/" + parent + ":listAssets", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ListAssetsResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClientImpl.prototype.updateConfig = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/config$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"PATCH", methodId:"earthengine.projects.updateConfig", path:"/" + this.gapiVersion + "/" + name, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ProjectConfig});
};
module$exports$eeapiclient$ee_api_client.ProjectsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsAssetsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsAssetsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.IProjectsAssetsApiClientViewEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientViewEnum = {BASIC:"BASIC", BASIC_SYNC:"BASIC_SYNC", EARTH_ENGINE_ASSET_VIEW_UNSPECIFIED:"EARTH_ENGINE_ASSET_VIEW_UNSPECIFIED", FULL:"FULL", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientViewEnum.EARTH_ENGINE_ASSET_VIEW_UNSPECIFIED, module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientViewEnum.FULL, module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientViewEnum.BASIC, module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientViewEnum.BASIC_SYNC];
}};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.copy = function(sourceName, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(sourceName, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.copy", path:"/" + this.gapiVersion + "/" + sourceName + ":copy", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.create", path:"/" + this.gapiVersion + "/" + parent + "/assets", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.createInternal = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.createInternal", path:"/" + this.gapiVersion + "/" + parent + "/assets:createInternal", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.delete = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:null, httpMethod:"DELETE", methodId:"earthengine.projects.assets.delete", path:"/" + this.gapiVersion + "/" + name, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Empty});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.get = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.assets.get", path:"/" + this.gapiVersion + "/" + name, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.getIamPolicy = function(resource, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(resource, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.getIamPolicy", path:"/" + this.gapiVersion + "/" + resource + ":getIamPolicy", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Policy});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.getLinked = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.getLinked", path:"/" + this.gapiVersion + "/" + name + ":getLinked", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.getPixels = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.getPixels", path:"/" + this.gapiVersion + "/" + name + ":getPixels", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.link = function(sourceName, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(sourceName, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.link", path:"/" + this.gapiVersion + "/" + sourceName + ":link", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.listAssets = function(parent, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.assets.listAssets", path:"/" + this.gapiVersion + "/" + parent + ":listAssets", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ListAssetsResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.listFeatures = function(asset, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(asset, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.assets.listFeatures", path:"/" + this.gapiVersion + "/" + asset + ":listFeatures", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ListFeaturesResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.move = function(sourceName, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(sourceName, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.move", path:"/" + this.gapiVersion + "/" + sourceName + ":move", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.patch = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"PATCH", methodId:"earthengine.projects.assets.patch", path:"/" + this.gapiVersion + "/" + name, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.setIamPolicy = function(resource, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(resource, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.setIamPolicy", path:"/" + this.gapiVersion + "/" + resource + ":setIamPolicy", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Policy});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl.prototype.testIamPermissions = function(resource, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(resource, RegExp("^projects/[^/]+/assets/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.assets.testIamPermissions", path:"/" + this.gapiVersion + "/" + resource + ":testIamPermissions", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.TestIamPermissionsResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsClassifierApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsClassifierApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClientImpl.prototype.export = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.classifier.export", path:"/" + this.gapiVersion + "/" + project + "/classifier:export", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsFeatureViewApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsFeatureViewApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.featureView.create", path:"/" + this.gapiVersion + "/" + parent + "/featureView", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.FeatureView});
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsFeatureViewsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsFeatureViewsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.featureViews.create", path:"/" + this.gapiVersion + "/" + parent + "/featureViews", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.FeatureView});
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsFeatureViewsTilesApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsFeatureViewsTilesApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClientImpl.prototype.get = function(parent, zoom, x, y, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/featureViews/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.featureViews.tiles.get", path:"/" + this.gapiVersion + "/" + parent + "/tiles/" + zoom + "/" + x + "/" + y, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewsTilesApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsFilmstripThumbnailsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsFilmstripThumbnailsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.filmstripThumbnails.create", path:"/" + this.gapiVersion + "/" + parent + "/filmstripThumbnails", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.FilmstripThumbnail});
};
module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientImpl.prototype.getPixels = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/filmstripThumbnails/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.filmstripThumbnails.getPixels", path:"/" + this.gapiVersion + "/" + name + ":getPixels", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsImageApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsImageApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsImageApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsImageApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsImageApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientImpl.prototype.computePixels = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.image.computePixels", path:"/" + this.gapiVersion + "/" + project + "/image:computePixels", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientImpl.prototype.export = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.image.export", path:"/" + this.gapiVersion + "/" + project + "/image:export", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientImpl.prototype.import = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.image.import", path:"/" + this.gapiVersion + "/" + project + "/image:import", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsImageApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsImageCollectionApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsImageCollectionApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClientImpl.prototype.computeImages = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.imageCollection.computeImages", path:"/" + this.gapiVersion + "/" + project + "/imageCollection:computeImages", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ComputeImagesResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsImageCollectionApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsAssetsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsAssetsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/locations/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.locations.assets.create", path:"/" + this.gapiVersion + "/" + parent + "/assets", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClientImpl.prototype.createInernal = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/locations/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.locations.assets.createInernal", path:"/" + this.gapiVersion + "/" + parent + "/assets:createInernal", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineAsset});
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsAssetsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsFilmstripThumbnailsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsFilmstripThumbnailsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/locations/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.locations.filmstripThumbnails.create", path:"/" + this.gapiVersion + "/" + parent + "/filmstripThumbnails", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.FilmstripThumbnail});
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsFilmstripThumbnailsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsMapsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsMapsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/locations/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.locations.maps.create", path:"/" + this.gapiVersion + "/" + parent + "/maps", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineMap});
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsMapsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsTablesApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsTablesApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/locations/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.locations.tables.create", path:"/" + this.gapiVersion + "/" + parent + "/tables", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Table});
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsTablesApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsThumbnailsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsThumbnailsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/locations/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.locations.thumbnails.create", path:"/" + this.gapiVersion + "/" + parent + "/thumbnails", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Thumbnail});
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsThumbnailsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsVideoThumbnailsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsLocationsVideoThumbnailsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/locations/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.locations.videoThumbnails.create", path:"/" + this.gapiVersion + "/" + parent + "/videoThumbnails", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.VideoThumbnail});
};
module$exports$eeapiclient$ee_api_client.ProjectsLocationsVideoThumbnailsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsMapApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsMapApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsMapApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsMapApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsMapApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsMapApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsMapApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsMapApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsMapApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsMapApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsMapApiClientImpl.prototype.export = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.map.export", path:"/" + this.gapiVersion + "/" + project + "/map:export", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsMapApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsMapsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsMapsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.maps.create", path:"/" + this.gapiVersion + "/" + parent + "/maps", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.EarthEngineMap});
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsMapsTilesApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsMapsTilesApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClientImpl.prototype.get = function(parent, zoom, x, y, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+/maps/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.maps.tiles.get", path:"/" + this.gapiVersion + "/" + parent + "/tiles/" + zoom + "/" + x + "/" + y, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsMapsTilesApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsOperationsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsOperationsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientImpl.prototype.cancel = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/operations/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.operations.cancel", path:"/" + this.gapiVersion + "/" + name + ":cancel", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Empty});
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientImpl.prototype.delete = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/operations/.*$"));
  return this.$apiClient.$request({body:null, httpMethod:"DELETE", methodId:"earthengine.projects.operations.delete", path:"/" + this.gapiVersion + "/" + name, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Empty});
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientImpl.prototype.get = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/operations/.*$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.operations.get", path:"/" + this.gapiVersion + "/" + name, queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientImpl.prototype.list = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.operations.list", path:"/" + this.gapiVersion + "/" + name + "/operations", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ListOperationsResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientImpl.prototype.wait = function(name, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/operations/.*$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.operations.wait", path:"/" + this.gapiVersion + "/" + name + ":wait", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsTableApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsTableApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsTableApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsTableApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsTableApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientImpl.prototype.computeFeatures = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.table.computeFeatures", path:"/" + this.gapiVersion + "/" + project + "/table:computeFeatures", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ComputeFeaturesResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientImpl.prototype.export = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.table.export", path:"/" + this.gapiVersion + "/" + project + "/table:export", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientImpl.prototype.import = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.table.import", path:"/" + this.gapiVersion + "/" + project + "/table:import", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsTableApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsTablesApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsTablesApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.tables.create", path:"/" + this.gapiVersion + "/" + parent + "/tables", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Table});
};
module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientImpl.prototype.getFeatures = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/tables/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.tables.getFeatures", path:"/" + this.gapiVersion + "/" + name + ":getFeatures", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsThumbnailsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsThumbnailsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.thumbnails.create", path:"/" + this.gapiVersion + "/" + parent + "/thumbnails", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Thumbnail});
};
module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientImpl.prototype.getPixels = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/thumbnails/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.thumbnails.getPixels", path:"/" + this.gapiVersion + "/" + name + ":getPixels", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsValueApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsValueApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsValueApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsValueApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsValueApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsValueApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsValueApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsValueApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsValueApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsValueApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsValueApiClientImpl.prototype.compute = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.value.compute", path:"/" + this.gapiVersion + "/" + project + "/value:compute", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.ComputeValueResponse});
};
module$exports$eeapiclient$ee_api_client.ProjectsValueApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsVideoApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsVideoApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClientImpl.prototype.export = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.video.export", path:"/" + this.gapiVersion + "/" + project + "/video:export", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsVideoMapApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsVideoMapApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClientImpl.prototype.export = function(project, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(project, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.videoMap.export", path:"/" + this.gapiVersion + "/" + project + "/videoMap:export", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Operation});
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IProjectsVideoThumbnailsApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IProjectsVideoThumbnailsApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientImpl.prototype.create = function(parent, $requestBody, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(parent, RegExp("^projects/[^/]+$"));
  return this.$apiClient.$request({body:$requestBody, httpMethod:"POST", methodId:"earthengine.projects.videoThumbnails.create", path:"/" + this.gapiVersion + "/" + parent + "/videoThumbnails", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.VideoThumbnail});
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientImpl.prototype.getPixels = function(name, namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  this.$apiClient.$validateParameter(name, RegExp("^projects/[^/]+/videoThumbnails/[^/]+$"));
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.projects.videoThumbnails.getPixels", path:"/" + this.gapiVersion + "/" + name + ":getPixels", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.HttpBody});
};
module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClient = function() {
};
module$exports$eeapiclient$ee_api_client.IV1ApiClient$XgafvEnum = function() {
};
module$exports$eeapiclient$ee_api_client.V1ApiClient$XgafvEnum = {1:"1", 2:"2", values:function() {
  return [module$exports$eeapiclient$ee_api_client.V1ApiClient$XgafvEnum[1], module$exports$eeapiclient$ee_api_client.V1ApiClient$XgafvEnum[2]];
}};
module$exports$eeapiclient$ee_api_client.IV1ApiClientAltEnum = function() {
};
module$exports$eeapiclient$ee_api_client.V1ApiClientAltEnum = {JSON:"json", MEDIA:"media", PROTO:"proto", values:function() {
  return [module$exports$eeapiclient$ee_api_client.V1ApiClientAltEnum.JSON, module$exports$eeapiclient$ee_api_client.V1ApiClientAltEnum.MEDIA, module$exports$eeapiclient$ee_api_client.V1ApiClientAltEnum.PROTO];
}};
module$exports$eeapiclient$ee_api_client.V1ApiClientImpl = function(gapiVersion, gapiRequestService, apiClientHookFactory) {
  this.gapiVersion = gapiVersion;
  this.$apiClient = new module$exports$eeapiclient$promise_api_client.PromiseApiClient(gapiRequestService, void 0 === apiClientHookFactory ? null : apiClientHookFactory);
};
module$exports$eeapiclient$ee_api_client.V1ApiClientImpl.prototype.getCapabilities = function(namedParameters, passthroughNamedParameters) {
  namedParameters = void 0 === namedParameters ? {} : namedParameters;
  passthroughNamedParameters = void 0 === passthroughNamedParameters ? {} : passthroughNamedParameters;
  return this.$apiClient.$request({body:null, httpMethod:"GET", methodId:"earthengine.getCapabilities", path:"/" + this.gapiVersion + "/capabilities", queryParams:module$contents$eeapiclient$request_params_buildQueryParams(namedParameters, module$contents$eeapiclient$ee_api_client_PARAM_MAP_0, passthroughNamedParameters), responseCtor:module$exports$eeapiclient$ee_api_client.Capabilities});
};
module$exports$eeapiclient$ee_api_client.V1ApiClient = function() {
};
ee.api = module$exports$eeapiclient$ee_api_client;
var module$exports$ee$apiVersion = {V1ALPHA:"v1alpha", V1:"v1"};
module$exports$ee$apiVersion.VERSION = module$exports$ee$apiVersion.V1;
goog.async = {};
var module$contents$goog$async$FreeList_FreeList = function(create, reset, limit) {
  this.limit_ = limit;
  this.create_ = create;
  this.reset_ = reset;
  this.occupants_ = 0;
  this.head_ = null;
};
module$contents$goog$async$FreeList_FreeList.prototype.get = function() {
  if (0 < this.occupants_) {
    this.occupants_--;
    var item = this.head_;
    this.head_ = item.next;
    item.next = null;
  } else {
    item = this.create_();
  }
  return item;
};
module$contents$goog$async$FreeList_FreeList.prototype.put = function(item) {
  this.reset_(item);
  this.occupants_ < this.limit_ && (this.occupants_++, item.next = this.head_, this.head_ = item);
};
module$contents$goog$async$FreeList_FreeList.prototype.occupants = function() {
  return this.occupants_;
};
goog.async.FreeList = module$contents$goog$async$FreeList_FreeList;
goog.dom.element = {};
var module$contents$goog$dom$element_isElement = function(value) {
  return goog.isObject(value) && value.nodeType === goog.dom.NodeType.ELEMENT;
}, module$contents$goog$dom$element_isHtmlElement = function(value) {
  return goog.isObject(value) && module$contents$goog$dom$element_isElement(value) && (!value.namespaceURI || "http://www.w3.org/1999/xhtml" === value.namespaceURI);
}, module$contents$goog$dom$element_isHtmlElementOfType = function(value, tagName) {
  return goog.isObject(value) && module$contents$goog$dom$element_isHtmlElement(value) && value.tagName.toUpperCase() === tagName.toString();
};
goog.dom.element.isElement = module$contents$goog$dom$element_isElement;
goog.dom.element.isHtmlElement = module$contents$goog$dom$element_isHtmlElement;
goog.dom.element.isHtmlElementOfType = module$contents$goog$dom$element_isHtmlElementOfType;
goog.dom.element.isHtmlAnchorElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.A);
};
goog.dom.element.isHtmlButtonElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.BUTTON);
};
goog.dom.element.isHtmlLinkElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.LINK);
};
goog.dom.element.isHtmlImageElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.IMG);
};
goog.dom.element.isHtmlAudioElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.AUDIO);
};
goog.dom.element.isHtmlVideoElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.VIDEO);
};
goog.dom.element.isHtmlInputElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.INPUT);
};
goog.dom.element.isHtmlTextAreaElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.TEXTAREA);
};
goog.dom.element.isHtmlCanvasElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.CANVAS);
};
goog.dom.element.isHtmlEmbedElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.EMBED);
};
goog.dom.element.isHtmlFormElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.FORM);
};
goog.dom.element.isHtmlFrameElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.FRAME);
};
goog.dom.element.isHtmlIFrameElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.IFRAME);
};
goog.dom.element.isHtmlObjectElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.OBJECT);
};
goog.dom.element.isHtmlScriptElement = function(value) {
  return module$contents$goog$dom$element_isHtmlElementOfType(value, goog.dom.TagName.SCRIPT);
};
goog.asserts.dom = {};
var module$contents$goog$asserts$dom_assertIsHtmlElement = function(value) {
  goog.asserts.ENABLE_ASSERTS && !module$contents$goog$dom$element_isHtmlElement(value) && goog.asserts.fail("Argument is not an HTML Element; got: " + module$contents$goog$asserts$dom_debugStringForType(value));
  return value;
}, module$contents$goog$asserts$dom_assertIsHtmlElementOfType = function(value, tagName) {
  goog.asserts.ENABLE_ASSERTS && !module$contents$goog$dom$element_isHtmlElementOfType(value, tagName) && goog.asserts.fail("Argument is not an HTML Element with tag name " + (tagName.toString() + "; got: " + module$contents$goog$asserts$dom_debugStringForType(value)));
  return value;
}, module$contents$goog$asserts$dom_assertIsHtmlAnchorElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.A);
}, module$contents$goog$asserts$dom_assertIsHtmlButtonElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.BUTTON);
}, module$contents$goog$asserts$dom_assertIsHtmlLinkElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.LINK);
}, module$contents$goog$asserts$dom_assertIsHtmlAudioElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.AUDIO);
}, module$contents$goog$asserts$dom_assertIsHtmlVideoElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.VIDEO);
}, module$contents$goog$asserts$dom_assertIsHtmlInputElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.INPUT);
}, module$contents$goog$asserts$dom_assertIsHtmlFormElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.FORM);
}, module$contents$goog$asserts$dom_assertIsHtmlIFrameElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.IFRAME);
}, module$contents$goog$asserts$dom_assertIsHtmlScriptElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.SCRIPT);
}, module$contents$goog$asserts$dom_debugStringForType = function(value) {
  if (goog.isObject(value)) {
    try {
      return value.constructor.displayName || value.constructor.name || Object.prototype.toString.call(value);
    } catch (e) {
      return "<object could not be stringified>";
    }
  } else {
    return void 0 === value ? "undefined" : null === value ? "null" : typeof value;
  }
};
goog.asserts.dom.assertIsElement = function(value) {
  goog.asserts.ENABLE_ASSERTS && !module$contents$goog$dom$element_isElement(value) && goog.asserts.fail("Argument is not an Element; got: " + module$contents$goog$asserts$dom_debugStringForType(value));
  return value;
};
goog.asserts.dom.assertIsHtmlElement = module$contents$goog$asserts$dom_assertIsHtmlElement;
goog.asserts.dom.assertIsHtmlElementOfType = module$contents$goog$asserts$dom_assertIsHtmlElementOfType;
goog.asserts.dom.assertIsHtmlAnchorElement = module$contents$goog$asserts$dom_assertIsHtmlAnchorElement;
goog.asserts.dom.assertIsHtmlButtonElement = module$contents$goog$asserts$dom_assertIsHtmlButtonElement;
goog.asserts.dom.assertIsHtmlLinkElement = module$contents$goog$asserts$dom_assertIsHtmlLinkElement;
goog.asserts.dom.assertIsHtmlImageElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.IMG);
};
goog.asserts.dom.assertIsHtmlAudioElement = module$contents$goog$asserts$dom_assertIsHtmlAudioElement;
goog.asserts.dom.assertIsHtmlVideoElement = module$contents$goog$asserts$dom_assertIsHtmlVideoElement;
goog.asserts.dom.assertIsHtmlInputElement = module$contents$goog$asserts$dom_assertIsHtmlInputElement;
goog.asserts.dom.assertIsHtmlTextAreaElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.TEXTAREA);
};
goog.asserts.dom.assertIsHtmlCanvasElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.CANVAS);
};
goog.asserts.dom.assertIsHtmlEmbedElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.EMBED);
};
goog.asserts.dom.assertIsHtmlFormElement = module$contents$goog$asserts$dom_assertIsHtmlFormElement;
goog.asserts.dom.assertIsHtmlFrameElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.FRAME);
};
goog.asserts.dom.assertIsHtmlIFrameElement = module$contents$goog$asserts$dom_assertIsHtmlIFrameElement;
goog.asserts.dom.assertIsHtmlObjectElement = function(value) {
  return module$contents$goog$asserts$dom_assertIsHtmlElementOfType(value, goog.dom.TagName.OBJECT);
};
goog.asserts.dom.assertIsHtmlScriptElement = module$contents$goog$asserts$dom_assertIsHtmlScriptElement;
goog.dom.BrowserFeature = {};
goog.dom.BrowserFeature.ASSUME_NO_OFFSCREEN_CANVAS = !1;
goog.dom.BrowserFeature.ASSUME_OFFSCREEN_CANVAS = !1;
goog.dom.BrowserFeature.detectOffscreenCanvas_ = function(contextName) {
  try {
    return !!(new self.OffscreenCanvas(0, 0)).getContext(contextName);
  } catch (ex) {
  }
  return !1;
};
goog.dom.BrowserFeature.OFFSCREEN_CANVAS_2D = !goog.dom.BrowserFeature.ASSUME_NO_OFFSCREEN_CANVAS && (goog.dom.BrowserFeature.ASSUME_OFFSCREEN_CANVAS || goog.dom.BrowserFeature.detectOffscreenCanvas_("2d"));
goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES = !0;
goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE = !0;
goog.dom.BrowserFeature.CAN_USE_INNER_TEXT = !1;
goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY = goog.userAgent.WEBKIT;
goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT = !1;
goog.dom.asserts = {};
goog.dom.asserts.assertIsLocation = function(o) {
  if (goog.asserts.ENABLE_ASSERTS) {
    var win = goog.dom.asserts.getWindow_(o);
    win && (!o || !(o instanceof win.Location) && o instanceof win.Element) && goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s", goog.dom.asserts.debugStringForType_(o));
  }
  return o;
};
goog.dom.asserts.debugStringForType_ = function(value) {
  if (goog.isObject(value)) {
    try {
      return value.constructor.displayName || value.constructor.name || Object.prototype.toString.call(value);
    } catch (e) {
      return "<object could not be stringified>";
    }
  } else {
    return void 0 === value ? "undefined" : null === value ? "null" : typeof value;
  }
};
goog.dom.asserts.getWindow_ = function(o) {
  try {
    var doc = o && o.ownerDocument, win = doc && (doc.defaultView || doc.parentWindow);
    win = win || goog.global;
    if (win.Element && win.Location) {
      return win;
    }
  } catch (ex) {
  }
  return null;
};
var module$exports$safevalues$for_friends$index = {}, module$contents$safevalues$for_friends$index_module = module$contents$safevalues$for_friends$index_module || {id:"third_party/javascript/safevalues/for_friends/index.closure.js"};
module$exports$safevalues$for_friends$index.IS_NOT_JAVASCRIPT_URL_PATTERN = module$exports$safevalues$builders$url_builders.IS_NOT_JAVASCRIPT_URL_PATTERN;
module$exports$safevalues$for_friends$index.unwrapUrlOrSanitize = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize;
safevalues.for_friends = {};
safevalues.for_friends.IS_NOT_JAVASCRIPT_URL_PATTERN = module$exports$safevalues$builders$url_builders.IS_NOT_JAVASCRIPT_URL_PATTERN;
safevalues.for_friends.unwrapUrlOrSanitize = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize;
var module$exports$safevalues$builders$sensitive_attributes = {}, module$contents$safevalues$builders$sensitive_attributes_module = module$contents$safevalues$builders$sensitive_attributes_module || {id:"third_party/javascript/safevalues/builders/sensitive_attributes.closure.js"};
module$exports$safevalues$builders$sensitive_attributes.SECURITY_SENSITIVE_ATTRIBUTES = "src srcdoc codebase data href rel action formaction sandbox cite poster icon".split(" ");
var module$contents$safevalues$builders$attribute_builders_module = module$contents$safevalues$builders$attribute_builders_module || {id:"third_party/javascript/safevalues/builders/attribute_builders.closure.js"};
function module$contents$safevalues$builders$attribute_builders_safeAttrPrefix(templ) {
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templ, 0);
  var attrPrefix = templ[0].toLowerCase();
  if (goog.DEBUG) {
    if (0 === attrPrefix.indexOf("on") || 0 === "on".indexOf(attrPrefix)) {
      throw Error("Prefix '" + templ[0] + "' does not guarantee the attribute to be safe as it is also a prefix for event handler attributesPlease use 'addEventListener' to set event handlers.");
    }
    module$exports$safevalues$builders$sensitive_attributes.SECURITY_SENSITIVE_ATTRIBUTES.forEach(function(sensitiveAttr) {
      if (0 === sensitiveAttr.indexOf(attrPrefix)) {
        throw Error("Prefix '" + templ[0] + "' does not guarantee the attribute to be safe as it is also a prefix for the security sensitive attribute '" + (sensitiveAttr + "'. Please use native or safe DOM APIs to set the attribute."));
      }
    });
  }
  return module$contents$safevalues$internals$attribute_impl_createAttributePrefixInternal(attrPrefix);
}
;var module$exports$safevalues$builders$document_fragment_builders = {}, module$contents$safevalues$builders$document_fragment_builders_module = module$contents$safevalues$builders$document_fragment_builders_module || {id:"third_party/javascript/safevalues/builders/document_fragment_builders.closure.js"};
function module$contents$safevalues$builders$document_fragment_builders_htmlFragment(templateObj) {
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, 0);
  return document.createRange().createContextualFragment((0,module$exports$safevalues$internals$html_impl.unwrapHtml)((0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(templateObj[0])));
}
module$exports$safevalues$builders$document_fragment_builders.htmlFragment = module$contents$safevalues$builders$document_fragment_builders_htmlFragment;
function module$contents$safevalues$builders$document_fragment_builders_svgFragment(templateObj) {
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, 0);
  var svgElem = document.createElementNS("http://www.w3.org/2000/svg", "svg"), range = document.createRange();
  range.selectNodeContents(svgElem);
  return range.createContextualFragment((0,module$exports$safevalues$internals$html_impl.unwrapHtml)((0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(templateObj[0])));
}
module$exports$safevalues$builders$document_fragment_builders.svgFragment = module$contents$safevalues$builders$document_fragment_builders_svgFragment;
function module$contents$safevalues$builders$document_fragment_builders_htmlToNode(html) {
  var fragment = document.createRange().createContextualFragment((0,module$exports$safevalues$internals$html_impl.unwrapHtml)(html));
  return 1 === fragment.childNodes.length ? fragment.childNodes[0] : fragment;
}
module$exports$safevalues$builders$document_fragment_builders.htmlToNode = module$contents$safevalues$builders$document_fragment_builders_htmlToNode;
var module$exports$safevalues$builders$style_sheet_builders = {}, module$contents$safevalues$builders$style_sheet_builders_module = module$contents$safevalues$builders$style_sheet_builders_module || {id:"third_party/javascript/safevalues/builders/style_sheet_builders.closure.js"}, module$contents$safevalues$builders$style_sheet_builders_Primitive;
function module$contents$safevalues$builders$style_sheet_builders_safeStyleRule(templateObj) {
  var rest = $jscomp.getRestArguments.apply(1, arguments);
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, rest.length);
  for (var stringifiedRule = templateObj[0], i = 0; i < templateObj.length - 1; i++) {
    stringifiedRule += String(rest[i]), stringifiedRule += templateObj[i + 1];
  }
  var doc = document.implementation.createHTMLDocument(""), styleEl = doc.createElement("style");
  doc.head.appendChild(styleEl);
  var styleSheet = styleEl.sheet;
  styleSheet.insertRule(stringifiedRule, 0);
  if (1 !== styleSheet.cssRules.length) {
    if (goog.DEBUG) {
      throw Error("safeStyleRule can be used to construct only 1 CSSStyleRule at a time. Use the concatStyle function to create sheet with several rules. Tried to parse: " + stringifiedRule + ("which has " + styleSheet.cssRules.length + " rules: " + styleSheet.cssRules[0].cssText + " #$% " + styleSheet.cssRules[1].cssText + "."));
    }
  } else {
    var styleSheetRule = styleSheet.cssRules[0];
    if (styleSheetRule instanceof CSSStyleRule) {
      return module$contents$safevalues$internals$style_sheet_impl_createStyleSheetInternal(styleSheetRule.cssText.replace(/</g, "\\3C "));
    }
    if (goog.DEBUG) {
      throw Error("safeStyleRule can be used to construct a CSSStyleRule. @-rules should be constructed with the safeStyleSheet builder. Tried to parse: " + stringifiedRule);
    }
  }
}
module$exports$safevalues$builders$style_sheet_builders.safeStyleRule = module$contents$safevalues$builders$style_sheet_builders_safeStyleRule;
function module$contents$safevalues$builders$style_sheet_builders_safeStyleSheet(templateObj) {
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, 0);
  var styleSheet = templateObj[0];
  if (goog.DEBUG && /</.test(styleSheet)) {
    throw Error("'<' character is forbidden in styleSheet string: " + styleSheet);
  }
  return module$contents$safevalues$internals$style_sheet_impl_createStyleSheetInternal(styleSheet);
}
module$exports$safevalues$builders$style_sheet_builders.safeStyleSheet = module$contents$safevalues$builders$style_sheet_builders_safeStyleSheet;
function module$contents$safevalues$builders$style_sheet_builders_concatStyleSheets(sheets) {
  return module$contents$safevalues$internals$style_sheet_impl_createStyleSheetInternal(sheets.map(module$contents$safevalues$internals$style_sheet_impl_unwrapStyleSheet).join(""));
}
module$exports$safevalues$builders$style_sheet_builders.concatStyleSheets = module$contents$safevalues$builders$style_sheet_builders_concatStyleSheets;
var module$exports$safevalues$builders$html_builders = {}, module$contents$safevalues$builders$html_builders_module = module$contents$safevalues$builders$html_builders_module || {id:"third_party/javascript/safevalues/builders/html_builders.closure.js"};
function module$contents$safevalues$builders$html_builders_htmlEscape(value, options) {
  options = void 0 === options ? {} : options;
  if ((0,module$exports$safevalues$internals$html_impl.isHtml)(value)) {
    return value;
  }
  var htmlEscapedString = module$contents$safevalues$builders$html_builders_htmlEscapeToString(String(value));
  options.preserveSpaces && (htmlEscapedString = htmlEscapedString.replace(/(^|[\r\n\t ]) /g, "$1&#160;"));
  options.preserveNewlines && (htmlEscapedString = htmlEscapedString.replace(/(\r\n|\n|\r)/g, "<br>"));
  options.preserveTabs && (htmlEscapedString = htmlEscapedString.replace(/(\t+)/g, '<span style="white-space:pre">$1</span>'));
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(htmlEscapedString);
}
module$exports$safevalues$builders$html_builders.htmlEscape = module$contents$safevalues$builders$html_builders_htmlEscape;
module$exports$safevalues$builders$html_builders.scriptToHtml = function(script, options) {
  options = void 0 === options ? {} : options;
  var unwrappedScript = module$contents$safevalues$internals$script_impl_unwrapScript(script).toString(), stringTag = "<script";
  options.id && (stringTag += ' id="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.id) + '"');
  options.nonce && (stringTag += ' nonce="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.nonce) + '"');
  options.type && (stringTag += ' type="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.type) + '"');
  options.defer && (stringTag += " defer");
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(stringTag + (">" + unwrappedScript + "\x3c/script>"));
};
module$exports$safevalues$builders$html_builders.scriptUrlToHtml = function(src, options) {
  options = void 0 === options ? {} : options;
  var unwrappedSrc = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(src).toString(), stringTag = '<script src="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(unwrappedSrc) + '"';
  options.async && (stringTag += " async");
  options.customElement && (stringTag += ' custom-element="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.customElement) + '"');
  options.defer && (stringTag += " defer");
  options.id && (stringTag += ' id="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.id) + '"');
  options.nonce && (stringTag += ' nonce="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.nonce) + '"');
  options.type && (stringTag += ' type="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.type) + '"');
  options.crossorigin && (stringTag += ' crossorigin="' + module$contents$safevalues$builders$html_builders_htmlEscapeToString(options.crossorigin) + '"');
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(stringTag + ">\x3c/script>");
};
function module$contents$safevalues$builders$html_builders_htmlEscapeToString(text) {
  return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
}
function module$contents$safevalues$builders$html_builders_concatHtmls(htmls) {
  return module$contents$safevalues$builders$html_builders_joinHtmls("", htmls);
}
module$exports$safevalues$builders$html_builders.concatHtmls = module$contents$safevalues$builders$html_builders_concatHtmls;
function module$contents$safevalues$builders$html_builders_joinHtmls(separator, htmls) {
  var separatorHtml = module$contents$safevalues$builders$html_builders_htmlEscape(separator);
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(htmls.map(function(value) {
    return (0,module$exports$safevalues$internals$html_impl.unwrapHtml)(module$contents$safevalues$builders$html_builders_htmlEscape(value));
  }).join((0,module$exports$safevalues$internals$html_impl.unwrapHtml)(separatorHtml).toString()));
}
module$exports$safevalues$builders$html_builders.joinHtmls = module$contents$safevalues$builders$html_builders_joinHtmls;
module$exports$safevalues$builders$html_builders.doctypeHtml = function() {
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)("<!DOCTYPE html>");
};
function module$contents$safevalues$builders$html_builders_nodeToHtmlInternal(node, temporaryRoot) {
  temporaryRoot.appendChild(node);
  var serializedNewTree = (new XMLSerializer()).serializeToString(temporaryRoot);
  serializedNewTree = serializedNewTree.slice(serializedNewTree.indexOf(">") + 1, serializedNewTree.lastIndexOf("</"));
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(serializedNewTree);
}
module$exports$safevalues$builders$html_builders.nodeToHtmlInternal = module$contents$safevalues$builders$html_builders_nodeToHtmlInternal;
module$exports$safevalues$builders$html_builders.nodeToHtml = function(node) {
  return module$contents$safevalues$builders$html_builders_nodeToHtmlInternal(node, document.createElement("span"));
};
var module$contents$safevalues$builders$html_builders_TextOrHtml, module$contents$safevalues$builders$html_builders_VALID_TAG_OR_ATTRIBUTE_NAMES = /^[a-z][a-z\d-]*$/i, module$contents$safevalues$builders$html_builders_DISALLOWED_TAG_NAMES = "APPLET BASE EMBED IFRAME LINK MATH META OBJECT SCRIPT STYLE SVG TEMPLATE".split(" ");
module$exports$safevalues$builders$html_builders.VOID_TAG_NAMES = "AREA BR COL COMMAND HR IMG INPUT KEYGEN PARAM SOURCE TRACK WBR".split(" ");
var module$contents$safevalues$builders$html_builders_URL_ATTRIBUTES = ["action", "formaction", "href"];
function module$contents$safevalues$builders$html_builders_verifyTagName(tagName) {
  if (!module$contents$safevalues$builders$html_builders_VALID_TAG_OR_ATTRIBUTE_NAMES.test(tagName)) {
    throw Error(goog.DEBUG ? "Invalid tag name <" + tagName + ">." : "");
  }
  if (-1 !== module$contents$safevalues$builders$html_builders_DISALLOWED_TAG_NAMES.indexOf(tagName.toUpperCase())) {
    throw Error(goog.DEBUG ? "Tag name <" + tagName + "> is not allowed for createHtml." : "");
  }
}
module$exports$safevalues$builders$html_builders.verifyTagName = module$contents$safevalues$builders$html_builders_verifyTagName;
function module$contents$safevalues$builders$html_builders_isVoidTag(tagName) {
  return -1 !== module$exports$safevalues$builders$html_builders.VOID_TAG_NAMES.indexOf(tagName.toUpperCase());
}
module$exports$safevalues$builders$html_builders.isVoidTag = module$contents$safevalues$builders$html_builders_isVoidTag;
module$exports$safevalues$builders$html_builders.createHtml = function(tagName, attributes, content) {
  module$contents$safevalues$builders$html_builders_verifyTagName(tagName);
  var result = "<" + tagName;
  attributes && (result += module$contents$safevalues$builders$html_builders_stringifyAttributes(tagName, attributes));
  Array.isArray(content) || (content = void 0 === content ? [] : [content]);
  if (module$contents$safevalues$builders$html_builders_isVoidTag(tagName)) {
    if (goog.DEBUG && 0 < content.length) {
      throw Error("Void tag <" + tagName + "> does not allow content.");
    }
    result += ">";
  } else {
    var html = module$contents$safevalues$builders$html_builders_concatHtmls(content.map(function(value) {
      return (0,module$exports$safevalues$internals$html_impl.isHtml)(value) ? value : module$contents$safevalues$builders$html_builders_htmlEscape(String(value));
    }));
    result += ">" + html.toString() + "</" + tagName + ">";
  }
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(result);
};
module$exports$safevalues$builders$html_builders.styleSheetToHtml = function(styleSheet, attributes) {
  var combinedAttributes = {};
  if (attributes) {
    for (var customAttrNames = Object.keys(attributes), i = 0; i < customAttrNames.length; i++) {
      var name = customAttrNames[i];
      if ("type" === name.toLowerCase()) {
        throw Error(goog.DEBUG ? "Cannot override the 'type' attribute with value " + attributes[name] + "." : "");
      }
      combinedAttributes[name] = attributes[name];
    }
  }
  combinedAttributes.type = "text/css";
  var stringifiedAttributes = module$contents$safevalues$builders$html_builders_stringifyAttributes("style", combinedAttributes);
  Array.isArray(styleSheet) && (styleSheet = module$contents$safevalues$builders$style_sheet_builders_concatStyleSheets(styleSheet));
  var styleContent = module$contents$safevalues$internals$style_sheet_impl_unwrapStyleSheet(styleSheet);
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)("<style " + stringifiedAttributes + ">" + styleContent + "</style>");
};
function module$contents$safevalues$builders$html_builders_stringifyAttributes(tagName, attributes) {
  for (var result = "", attrNames = Object.keys(attributes), i = 0; i < attrNames.length; i++) {
    var name = attrNames[i], value = attributes[name];
    if (!module$contents$safevalues$builders$html_builders_VALID_TAG_OR_ATTRIBUTE_NAMES.test(name)) {
      throw Error(goog.DEBUG ? 'Invalid attribute name "' + name + '".' : "");
    }
    void 0 !== value && null !== value && (result += " " + module$contents$safevalues$builders$html_builders_getAttrNameAndValue(tagName, name, value));
  }
  return result;
}
module$exports$safevalues$builders$html_builders.stringifyAttributes = module$contents$safevalues$builders$html_builders_stringifyAttributes;
function module$contents$safevalues$builders$html_builders_getAttrNameAndValue(tagName, name, value) {
  if (/^on/i.test(name)) {
    throw Error(goog.DEBUG ? 'Attribute "' + name + " is forbidden. Inline event handlers can lead to XSS. Please use the 'addEventListener' API instead." : "");
  }
  -1 !== module$contents$safevalues$builders$html_builders_URL_ATTRIBUTES.indexOf(name.toLowerCase()) && (value = module$contents$safevalues$internals$url_impl_isUrl(value) ? value.toString() : module$contents$safevalues$builders$url_builders_sanitizeJavaScriptUrl(String(value)) || "about:invalid#zClosurez");
  if (goog.DEBUG && !module$contents$safevalues$internals$url_impl_isUrl(value) && !(0,module$exports$safevalues$internals$html_impl.isHtml)(value) && !module$contents$safevalues$internals$style_impl_isStyle(value) && "string" !== typeof value && "number" !== typeof value) {
    throw Error("String or number value expected, got " + typeof value + " with value '" + value + "' given.");
  }
  return name + '="' + module$contents$safevalues$builders$html_builders_htmlEscape(String(value)) + '"';
}
;var module$exports$safevalues$builders$html_formatter = {}, module$contents$safevalues$builders$html_formatter_module = module$contents$safevalues$builders$html_formatter_module || {id:"third_party/javascript/safevalues/builders/html_formatter.closure.js"};
function module$contents$safevalues$builders$html_formatter_HtmlReplacement() {
}
function module$contents$safevalues$builders$html_formatter_StartTagReplacement() {
}
function module$contents$safevalues$builders$html_formatter_EndTagReplacement() {
}
var module$contents$safevalues$builders$html_formatter_Replacement;
module$exports$safevalues$builders$html_formatter.HtmlFormatter = function() {
  this.replacements = new Map();
};
module$exports$safevalues$builders$html_formatter.HtmlFormatter.prototype.format = function(format) {
  var $jscomp$this$1018007701$5 = this, openedTags = [], marker = (0,module$exports$safevalues$builders$html_builders.htmlEscape)("_safevalues_format_marker_:").toString(), html = (0,module$exports$safevalues$builders$html_builders.htmlEscape)(format).toString().replace(new RegExp("\\{" + marker + "[\\w&#;]+\\}", "g"), function(match) {
    return $jscomp$this$1018007701$5.replaceFormattingString(openedTags, match);
  });
  if (0 !== openedTags.length) {
    if (goog.DEBUG) {
      throw Error("Expected no unclosed tags, got <" + openedTags.join(">, <") + ">.");
    }
    throw Error();
  }
  return (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(html);
};
module$exports$safevalues$builders$html_formatter.HtmlFormatter.prototype.replaceFormattingString = function(openedTags, match) {
  var replacement = this.replacements.get(match);
  if (!replacement) {
    return match;
  }
  var result = "";
  switch(replacement.type) {
    case "html":
      result = replacement.html;
      break;
    case "startTag":
      result = "<" + replacement.tagName + replacement.attributes + ">";
      goog.DEBUG && ((0,module$exports$safevalues$builders$html_builders.isVoidTag)(replacement.tagName.toLowerCase()) || openedTags.push(replacement.tagName.toLowerCase()));
      break;
    case "endTag":
      result = "</" + replacement.tagName + ">";
      if (goog.DEBUG) {
        var lastTag = openedTags.pop();
        if (lastTag !== replacement.tagName.toLowerCase()) {
          throw Error("Expected </" + lastTag + ">, got </" + replacement.tagName + ">.");
        }
      }
      break;
    default:
      goog.DEBUG && module$contents$safevalues$builders$html_formatter_checkExhaustive(replacement, "type had an unknown value");
  }
  return result;
};
module$exports$safevalues$builders$html_formatter.HtmlFormatter.prototype.startTag = function(tagName, attributes) {
  (0,module$exports$safevalues$builders$html_builders.verifyTagName)(tagName);
  return this.storeReplacement({type:"startTag", tagName:tagName, attributes:void 0 !== attributes ? (0,module$exports$safevalues$builders$html_builders.stringifyAttributes)(tagName, attributes) : ""});
};
module$exports$safevalues$builders$html_formatter.HtmlFormatter.prototype.endTag = function(tagName) {
  (0,module$exports$safevalues$builders$html_builders.verifyTagName)(tagName);
  return this.storeReplacement({type:"endTag", tagName:tagName});
};
module$exports$safevalues$builders$html_formatter.HtmlFormatter.prototype.text = function(text) {
  return this.storeReplacement({type:"html", html:(0,module$exports$safevalues$builders$html_builders.htmlEscape)(text).toString()});
};
module$exports$safevalues$builders$html_formatter.HtmlFormatter.prototype.safeHtml = function(safeHtml) {
  return this.storeReplacement({type:"html", html:(0,module$exports$safevalues$internals$html_impl.unwrapHtml)(safeHtml).toString()});
};
module$exports$safevalues$builders$html_formatter.HtmlFormatter.prototype.storeReplacement = function(replacement) {
  var marker = "{_safevalues_format_marker_:" + this.replacements.size + "_" + module$contents$safevalues$builders$html_formatter_getRandomString() + "}";
  this.replacements.set((0,module$exports$safevalues$builders$html_builders.htmlEscape)(marker).toString(), replacement);
  return marker;
};
function module$contents$safevalues$builders$html_formatter_getRandomString() {
  return Math.random().toString(36).slice(2);
}
function module$contents$safevalues$builders$html_formatter_checkExhaustive(value, msg) {
  throw Error(void 0 === msg ? "unexpected value " + value + "!" : msg);
}
;var module$contents$safevalues$builders$html_sanitizer$inert_fragment_module = module$contents$safevalues$builders$html_sanitizer$inert_fragment_module || {id:"third_party/javascript/safevalues/builders/html_sanitizer/inert_fragment.closure.js"};
function module$contents$safevalues$builders$html_sanitizer$inert_fragment_createInertFragment(dirtyHtml, inertDocument) {
  if (goog.DEBUG && inertDocument.defaultView) {
    throw Error("createInertFragment called with non-inert document");
  }
  var range = inertDocument.createRange();
  range.selectNode(inertDocument.body);
  var temporarySafeHtml = (0,module$exports$safevalues$internals$html_impl.createHtmlInternal)(dirtyHtml);
  return (0,module$exports$safevalues$dom$globals$range.createContextualFragment)(range, temporarySafeHtml);
}
;var module$exports$safevalues$builders$html_sanitizer$no_clobber = {}, module$contents$safevalues$builders$html_sanitizer$no_clobber_module = module$contents$safevalues$builders$html_sanitizer$no_clobber_module || {id:"third_party/javascript/safevalues/builders/html_sanitizer/no_clobber.closure.js"};
function module$contents$safevalues$builders$html_sanitizer$no_clobber_getNodeName(node) {
  var nodeName = node.nodeName;
  return "string" === typeof nodeName ? nodeName : "FORM";
}
module$exports$safevalues$builders$html_sanitizer$no_clobber.getNodeName = module$contents$safevalues$builders$html_sanitizer$no_clobber_getNodeName;
function module$contents$safevalues$builders$html_sanitizer$no_clobber_isText(node) {
  return 3 === node.nodeType;
}
module$exports$safevalues$builders$html_sanitizer$no_clobber.isText = module$contents$safevalues$builders$html_sanitizer$no_clobber_isText;
function module$contents$safevalues$builders$html_sanitizer$no_clobber_isElement(node) {
  var nodeType = node.nodeType;
  return 1 === nodeType || "number" !== typeof nodeType;
}
module$exports$safevalues$builders$html_sanitizer$no_clobber.isElement = module$contents$safevalues$builders$html_sanitizer$no_clobber_isElement;
var module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table = {}, module$contents$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table_module = module$contents$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table_module || {id:"third_party/javascript/safevalues/builders/html_sanitizer/sanitizer_table/sanitizer_table.closure.js"};
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable = function(allowedElements, elementPolicies, allowedGlobalAttributes, globalAttributePolicies, globallyAllowedAttributePrefixes) {
  this.allowedElements = allowedElements;
  this.elementPolicies = elementPolicies;
  this.allowedGlobalAttributes = allowedGlobalAttributes;
  this.globalAttributePolicies = globalAttributePolicies;
  this.globallyAllowedAttributePrefixes = globallyAllowedAttributePrefixes;
};
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable.prototype.isAllowedElement = function(elementName) {
  return "FORM" !== elementName && (this.allowedElements.has(elementName) || this.elementPolicies.has(elementName));
};
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable.prototype.getAttributePolicy = function(attributeName, elementName) {
  var elementPolicy = this.elementPolicies.get(elementName);
  if (null == elementPolicy ? 0 : elementPolicy.has(attributeName)) {
    return elementPolicy.get(attributeName);
  }
  if (this.allowedGlobalAttributes.has(attributeName)) {
    return {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP};
  }
  var globalPolicy = this.globalAttributePolicies.get(attributeName);
  return globalPolicy ? globalPolicy : this.globallyAllowedAttributePrefixes && [].concat($jscomp.arrayFromIterable(this.globallyAllowedAttributePrefixes)).some(function(prefix) {
    return 0 === attributeName.indexOf(prefix);
  }) ? {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP} : {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.DROP};
};
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction = {DROP:0, KEEP:1, KEEP_AND_SANITIZE_URL:2, KEEP_AND_NORMALIZE:3, KEEP_AND_SANITIZE_STYLE:4};
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction[module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.DROP] = "DROP";
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction[module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP] = "KEEP";
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction[module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_URL] = "KEEP_AND_SANITIZE_URL";
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction[module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_NORMALIZE] = "KEEP_AND_NORMALIZE";
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction[module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_STYLE] = "KEEP_AND_SANITIZE_STYLE";
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicy = function() {
};
var module$contents$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table_FORBIDDEN_CUSTOM_ELEMENT_NAMES = new Set("ANNOTATION-XML COLOR-PROFILE FONT-FACE FONT-FACE-SRC FONT-FACE-URI FONT-FACE-FORMAT FONT-FACE-NAME MISSING-GLYPH".split(" "));
function module$contents$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table_isCustomElement(tag) {
  return !module$contents$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table_FORBIDDEN_CUSTOM_ELEMENT_NAMES.has(tag.toUpperCase()) && /^[a-z][-_.a-z0-9]*-[-_.a-z0-9]*$/i.test(tag);
}
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.isCustomElement = module$contents$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table_isCustomElement;
var module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table = {}, module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_module = module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_module || {id:"third_party/javascript/safevalues/builders/html_sanitizer/sanitizer_table/default_sanitizer_table.closure.js"}, 
module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_ELEMENTS = "ARTICLE SECTION NAV ASIDE H1 H2 H3 H4 H5 H6 HEADER FOOTER ADDRESS P HR PRE BLOCKQUOTE OL UL LH LI DL DT DD FIGURE FIGCAPTION MAIN DIV EM STRONG SMALL S CITE Q DFN ABBR RUBY RB RT RTC RP DATA TIME CODE VAR SAMP KBD SUB SUP I B U MARK BDI BDO SPAN BR WBR INS DEL PICTURE PARAM TRACK MAP TABLE CAPTION COLGROUP COL TBODY THEAD TFOOT TR TD TH SELECT DATALIST OPTGROUP OPTION OUTPUT PROGRESS METER FIELDSET LEGEND DETAILS SUMMARY MENU DIALOG SLOT CANVAS FONT CENTER ACRONYM BASEFONT BIG DIR HGROUP STRIKE TT".split(" "), 
module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ELEMENT_POLICIES = [["A", new Map([["href", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_URL}]])], ["AREA", new Map([["href", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_URL}]])], 
["LINK", new Map([["href", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_URL, conditions:new Map([["rel", new Set("alternate author bookmark canonical cite help icon license next prefetch dns-prefetch prerender preconnect preload prev search subresource".split(" "))]])}]])], ["SOURCE", new Map([["src", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}], 
["srcset", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}]])], ["IMG", new Map([["src", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}], ["srcset", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}]])], 
["VIDEO", new Map([["src", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}]])], ["AUDIO", new Map([["src", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}]])]], module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_GLOBAL_ATTRIBUTES = 
"title aria-atomic aria-autocomplete aria-busy aria-checked aria-current aria-disabled aria-dropeffect aria-expanded aria-haspopup aria-hidden aria-invalid aria-label aria-level aria-live aria-multiline aria-multiselectable aria-orientation aria-posinset aria-pressed aria-readonly aria-relevant aria-required aria-selected aria-setsize aria-sort aria-valuemax aria-valuemin aria-valuenow aria-valuetext alt align autocapitalize autocomplete autocorrect autofocus autoplay bgcolor border cellpadding cellspacing checked color cols colspan controls datetime disabled download draggable enctype face formenctype frameborder height hreflang hidden ismap label lang loop max maxlength media minlength min multiple muted nonce open placeholder preload rel required reversed role rows rowspan selected shape size sizes slot span spellcheck start step summary translate type valign value width wrap itemscope itemtype itemid itemprop itemref".split(" "), 
module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_GLOBAL_ATTRIBUTE_POLICIES = [["dir", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_NORMALIZE, conditions:module$contents$safevalues$internals$pure_pure(function() {
  return new Map([["dir", new Set(["auto", "ltr", "rtl"])]]);
})}], ["async", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_NORMALIZE, conditions:module$contents$safevalues$internals$pure_pure(function() {
  return new Map([["async", new Set(["async"])]]);
})}], ["cite", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_URL}], ["loading", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_NORMALIZE, conditions:module$contents$safevalues$internals$pure_pure(function() {
  return new Map([["loading", new Set(["eager", "lazy"])]]);
})}], ["poster", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_URL}], ["target", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_NORMALIZE, conditions:module$contents$safevalues$internals$pure_pure(function() {
  return new Map([["target", new Set(["_self", "_blank"])]]);
})}]];
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table.defaultSanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(new Set(module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_ELEMENTS), new Map(module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ELEMENT_POLICIES), 
new Set(module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_GLOBAL_ATTRIBUTES), new Map(module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_GLOBAL_ATTRIBUTE_POLICIES));
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table.lenientSanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(new Set(module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_ELEMENTS.concat(["BUTTON", "INPUT"])), new Map(module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ELEMENT_POLICIES), 
new Set(module$contents$safevalues$internals$pure_pure(function() {
  return module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_GLOBAL_ATTRIBUTES.concat(["class", "id", "name"]);
})), new Map(module$contents$safevalues$internals$pure_pure(function() {
  return module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_GLOBAL_ATTRIBUTE_POLICIES.concat([["style", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}]]);
})));
module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table.superLenientSanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(new Set(module$contents$safevalues$internals$pure_pure(function() {
  return module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_ELEMENTS.concat("STYLE TITLE INPUT TEXTAREA BUTTON LABEL".split(" "));
})), new Map(module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ELEMENT_POLICIES), new Set(module$contents$safevalues$internals$pure_pure(function() {
  return module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_ALLOWED_GLOBAL_ATTRIBUTES.concat(["class", "id", "tabindex", "contenteditable", "name"]);
})), new Map(module$contents$safevalues$internals$pure_pure(function() {
  return module$contents$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table_GLOBAL_ATTRIBUTE_POLICIES.concat([["style", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP}]]);
})), new Set(["data-", "aria-"]));
var module$exports$safevalues$builders$html_sanitizer$html_sanitizer = {}, module$contents$safevalues$builders$html_sanitizer$html_sanitizer_module = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_module || {id:"third_party/javascript/safevalues/builders/html_sanitizer/html_sanitizer.closure.js"};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizer = function() {
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl = function(sanitizerTable, token) {
  this.sanitizerTable = sanitizerTable;
  this.changes = [];
  module$contents$safevalues$internals$secrets_ensureTokenIsValid(token);
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.sanitizeAssertUnchanged = function(html) {
  goog.DEBUG && (this.changes = []);
  var sanitizedHtml = this.sanitize(html);
  if (goog.DEBUG && 0 !== this.changes.length) {
    throw Error('Unexpected change to HTML value as a result of sanitization. Input: "' + (html + '", sanitized output: "' + sanitizedHtml + '"\nList of changes:') + this.changes.join("\n"));
  }
  return sanitizedHtml;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.sanitize = function(html) {
  var inertDocument = document.implementation.createHTMLDocument("");
  return (0,module$exports$safevalues$builders$html_builders.nodeToHtmlInternal)(this.sanitizeToFragmentInternal(html, inertDocument), inertDocument.body);
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.sanitizeToFragment = function(html) {
  var inertDocument = document.implementation.createHTMLDocument("");
  return this.sanitizeToFragmentInternal(html, inertDocument);
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.sanitizeToFragmentInternal = function(html, inertDocument) {
  for (var $jscomp$this$m1085474118$10 = this, dirtyFragment = module$contents$safevalues$builders$html_sanitizer$inert_fragment_createInertFragment(html, inertDocument), treeWalker = document.createTreeWalker(dirtyFragment, 5, function(n) {
    return $jscomp$this$m1085474118$10.nodeFilter(n);
  }, !1), currentNode = treeWalker.nextNode(), sanitizedFragment = inertDocument.createDocumentFragment(), sanitizedParent = sanitizedFragment; null !== currentNode;) {
    var sanitizedNode = void 0;
    if (module$contents$safevalues$builders$html_sanitizer$no_clobber_isText(currentNode)) {
      sanitizedNode = this.sanitizeTextNode(currentNode);
    } else if (module$contents$safevalues$builders$html_sanitizer$no_clobber_isElement(currentNode)) {
      sanitizedNode = this.sanitizeElementNode(currentNode, inertDocument);
    } else {
      var message = "";
      goog.DEBUG && (message = "Node is not of type text or element");
      throw Error(message);
    }
    sanitizedParent.appendChild(sanitizedNode);
    if (currentNode = treeWalker.firstChild()) {
      sanitizedParent = sanitizedNode;
    } else {
      for (; !(currentNode = treeWalker.nextSibling()) && (currentNode = treeWalker.parentNode());) {
        sanitizedParent = sanitizedParent.parentNode;
      }
    }
  }
  return sanitizedFragment;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.sanitizeTextNode = function(textNode) {
  return document.createTextNode(textNode.data);
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.sanitizeElementNode = function(elementNode, inertDocument) {
  for (var elementName = module$contents$safevalues$builders$html_sanitizer$no_clobber_getNodeName(elementNode), newNode = inertDocument.createElement(elementName), dirtyAttributes = elementNode.attributes, $jscomp$iter$31 = $jscomp.makeIterator(dirtyAttributes), $jscomp$key$m1085474118$25$ = $jscomp$iter$31.next(); !$jscomp$key$m1085474118$25$.done; $jscomp$key$m1085474118$25$ = $jscomp$iter$31.next()) {
    var $jscomp$destructuring$var31 = $jscomp$key$m1085474118$25$.value, name = $jscomp$destructuring$var31.name, value = $jscomp$destructuring$var31.value, policy = this.sanitizerTable.getAttributePolicy(name, elementName);
    if (this.satisfiesAllConditions(policy.conditions, dirtyAttributes)) {
      switch(policy.policyAction) {
        case module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP:
          module$contents$safevalues$builders$html_sanitizer$html_sanitizer_setAttribute(newNode, name, value);
          break;
        case module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_URL:
          var sanitizedAttrUrl = module$contents$safevalues$builders$url_builders_restrictivelySanitizeUrl(value);
          sanitizedAttrUrl !== value && this.recordChange("Url in attribute " + name + ' was modified during sanitization. Original url:"' + value + '" was sanitized to: "' + sanitizedAttrUrl + '"');
          module$contents$safevalues$builders$html_sanitizer$html_sanitizer_setAttribute(newNode, name, sanitizedAttrUrl);
          break;
        case module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_NORMALIZE:
          module$contents$safevalues$builders$html_sanitizer$html_sanitizer_setAttribute(newNode, name, value.toLowerCase());
          break;
        case module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_STYLE:
          module$contents$safevalues$builders$html_sanitizer$html_sanitizer_setAttribute(newNode, name, value);
          break;
        case module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.DROP:
          this.recordChange("Attribute: " + name + " was dropped");
          break;
        default:
          goog.DEBUG && module$contents$safevalues$builders$html_sanitizer$html_sanitizer_checkExhaustive(policy.policyAction, "Unhandled AttributePolicyAction case");
      }
    } else {
      this.recordChange("Not all conditions satisfied for attribute: " + name + ".");
    }
  }
  return newNode;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.nodeFilter = function(node) {
  if (module$contents$safevalues$builders$html_sanitizer$no_clobber_isText(node)) {
    return 1;
  }
  if (!module$contents$safevalues$builders$html_sanitizer$no_clobber_isElement(node)) {
    return 2;
  }
  var nodeName = module$contents$safevalues$builders$html_sanitizer$no_clobber_getNodeName(node);
  if (null === nodeName) {
    return this.recordChange("Node name was null for node: " + node), 2;
  }
  if (this.sanitizerTable.isAllowedElement(nodeName)) {
    return 1;
  }
  this.recordChange("Element: " + nodeName + " was dropped");
  return 2;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.recordChange = function(errorMessage) {
  goog.DEBUG && this.changes.push(errorMessage);
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl.prototype.satisfiesAllConditions = function(conditions, attrs) {
  if (!conditions) {
    return !0;
  }
  for (var $jscomp$iter$32 = $jscomp.makeIterator(conditions), $jscomp$key$m1085474118$26$ = $jscomp$iter$32.next(); !$jscomp$key$m1085474118$26$.done; $jscomp$key$m1085474118$26$ = $jscomp$iter$32.next()) {
    var $jscomp$destructuring$var33 = $jscomp.makeIterator($jscomp$key$m1085474118$26$.value), attrName__tsickle_destructured_1 = $jscomp$destructuring$var33.next().value, expectedValues = $jscomp$destructuring$var33.next().value, $jscomp$optchain$tmpm1085474118$0 = void 0, value = null == ($jscomp$optchain$tmpm1085474118$0 = attrs.getNamedItem(attrName__tsickle_destructured_1)) ? void 0 : $jscomp$optchain$tmpm1085474118$0.value;
    if (value && !expectedValues.has(value)) {
      return !1;
    }
  }
  return !0;
};
function module$contents$safevalues$builders$html_sanitizer$html_sanitizer_setAttribute(el, name, value) {
  el.setAttribute(name, value);
}
var module$contents$safevalues$builders$html_sanitizer$html_sanitizer_defaultHtmlSanitizer = module$contents$safevalues$internals$pure_pure(function() {
  return new module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl(module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table.defaultSanitizerTable, module$exports$safevalues$internals$secrets.secretToken);
});
function module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtml(html) {
  return module$contents$safevalues$builders$html_sanitizer$html_sanitizer_defaultHtmlSanitizer.sanitize(html);
}
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.sanitizeHtml = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtml;
function module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlAssertUnchanged(html) {
  return module$contents$safevalues$builders$html_sanitizer$html_sanitizer_defaultHtmlSanitizer.sanitizeAssertUnchanged(html);
}
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.sanitizeHtmlAssertUnchanged = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlAssertUnchanged;
function module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlToFragment(html) {
  return module$contents$safevalues$builders$html_sanitizer$html_sanitizer_defaultHtmlSanitizer.sanitizeToFragment(html);
}
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.sanitizeHtmlToFragment = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlToFragment;
var module$contents$safevalues$builders$html_sanitizer$html_sanitizer_lenientHtmlSanitizer = module$contents$safevalues$internals$pure_pure(function() {
  return new module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl(module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table.lenientSanitizerTable, module$exports$safevalues$internals$secrets.secretToken);
});
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.lenientlySanitizeHtml = function(html) {
  return module$contents$safevalues$builders$html_sanitizer$html_sanitizer_lenientHtmlSanitizer.sanitize(html);
};
function module$contents$safevalues$builders$html_sanitizer$html_sanitizer_lenientlySanitizeHtmlAssertUnchanged(html) {
  return module$contents$safevalues$builders$html_sanitizer$html_sanitizer_lenientHtmlSanitizer.sanitizeAssertUnchanged(html);
}
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.lenientlySanitizeHtmlAssertUnchanged = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_lenientlySanitizeHtmlAssertUnchanged;
var module$contents$safevalues$builders$html_sanitizer$html_sanitizer_superLenientHtmlSanitizer = module$contents$safevalues$internals$pure_pure(function() {
  return new module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl(module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table.superLenientSanitizerTable, module$exports$safevalues$internals$secrets.secretToken);
});
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.superLenientlySanitizeHtml = function(html) {
  return module$contents$safevalues$builders$html_sanitizer$html_sanitizer_superLenientHtmlSanitizer.sanitize(html);
};
function module$contents$safevalues$builders$html_sanitizer$html_sanitizer_superLenientlySanitizeHtmlAssertUnchanged(html) {
  return module$contents$safevalues$builders$html_sanitizer$html_sanitizer_superLenientHtmlSanitizer.sanitizeAssertUnchanged(html);
}
module$exports$safevalues$builders$html_sanitizer$html_sanitizer.superLenientlySanitizeHtmlAssertUnchanged = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_superLenientlySanitizeHtmlAssertUnchanged;
function module$contents$safevalues$builders$html_sanitizer$html_sanitizer_checkExhaustive(value, msg) {
  throw Error(void 0 === msg ? "unexpected value " + value + "!" : msg);
}
;var module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder = {}, module$contents$safevalues$builders$html_sanitizer$html_sanitizer_builder_module = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_builder_module || {id:"third_party/javascript/safevalues/builders/html_sanitizer/html_sanitizer_builder.closure.js"};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder = function() {
  this.calledBuild = !1;
  this.sanitizerTable = module$exports$safevalues$builders$html_sanitizer$sanitizer_table$default_sanitizer_table.defaultSanitizerTable;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.onlyAllowElements = function(elementSet) {
  for (var allowedElements = new Set(), allowedElementPolicies = new Map(), $jscomp$iter$33 = $jscomp.makeIterator(elementSet), $jscomp$key$435282654$0$element = $jscomp$iter$33.next(); !$jscomp$key$435282654$0$element.done; $jscomp$key$435282654$0$element = $jscomp$iter$33.next()) {
    var element = $jscomp$key$435282654$0$element.value;
    element = element.toUpperCase();
    if (!this.sanitizerTable.isAllowedElement(element)) {
      throw Error("Element: " + element + ", is not allowed by html5_contract.textpb");
    }
    var elementPolicy = this.sanitizerTable.elementPolicies.get(element);
    void 0 !== elementPolicy ? allowedElementPolicies.set(element, elementPolicy) : allowedElements.add(element);
  }
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(allowedElements, allowedElementPolicies, this.sanitizerTable.allowedGlobalAttributes, this.sanitizerTable.globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.allowCustomElement = function(element, allowedAttributes) {
  var allowedElements = new Set(this.sanitizerTable.allowedElements), allowedElementPolicies = new Map(this.sanitizerTable.elementPolicies);
  element = element.toUpperCase();
  if (!module$contents$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table_isCustomElement(element)) {
    throw Error("Element: " + element + " is not a custom element");
  }
  if (allowedAttributes) {
    for (var elementPolicy = new Map(), $jscomp$iter$34 = $jscomp.makeIterator(allowedAttributes), $jscomp$key$435282654$1$attribute = $jscomp$iter$34.next(); !$jscomp$key$435282654$1$attribute.done; $jscomp$key$435282654$1$attribute = $jscomp$iter$34.next()) {
      elementPolicy.set($jscomp$key$435282654$1$attribute.value, {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP});
    }
    allowedElementPolicies.set(element, elementPolicy);
  } else {
    allowedElements.add(element);
  }
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(allowedElements, allowedElementPolicies, this.sanitizerTable.allowedGlobalAttributes, this.sanitizerTable.globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.onlyAllowAttributes = function(attributeSet) {
  for (var allowedGlobalAttributes = new Set(), globalAttributePolicies = new Map(), elementPolicies = new Map(), $jscomp$iter$35 = $jscomp.makeIterator(attributeSet), $jscomp$key$435282654$2$attribute = $jscomp$iter$35.next(); !$jscomp$key$435282654$2$attribute.done; $jscomp$key$435282654$2$attribute = $jscomp$iter$35.next()) {
    var attribute = $jscomp$key$435282654$2$attribute.value;
    this.sanitizerTable.allowedGlobalAttributes.has(attribute) && allowedGlobalAttributes.add(attribute);
    this.sanitizerTable.globalAttributePolicies.has(attribute) && globalAttributePolicies.set(attribute, this.sanitizerTable.globalAttributePolicies.get(attribute));
  }
  for (var $jscomp$iter$37 = $jscomp.makeIterator(this.sanitizerTable.elementPolicies.entries()), $jscomp$key$435282654$4$ = $jscomp$iter$37.next(); !$jscomp$key$435282654$4$.done; $jscomp$key$435282654$4$ = $jscomp$iter$37.next()) {
    for (var $jscomp$destructuring$var35 = $jscomp.makeIterator($jscomp$key$435282654$4$.value), elementName__tsickle_destructured_1 = $jscomp$destructuring$var35.next().value, originalElementPolicy__tsickle_destructured_2 = $jscomp$destructuring$var35.next().value, elementName = elementName__tsickle_destructured_1, newElementPolicy = new Map(), $jscomp$iter$36 = $jscomp.makeIterator(originalElementPolicy__tsickle_destructured_2.entries()), $jscomp$key$435282654$3$ = $jscomp$iter$36.next(); !$jscomp$key$435282654$3$.done; $jscomp$key$435282654$3$ = 
    $jscomp$iter$36.next()) {
      var $jscomp$destructuring$var37 = $jscomp.makeIterator($jscomp$key$435282654$3$.value), attribute__tsickle_destructured_3 = $jscomp$destructuring$var37.next().value, attributePolicy__tsickle_destructured_4 = $jscomp$destructuring$var37.next().value, attribute$jscomp$0 = attribute__tsickle_destructured_3, attributePolicy = attributePolicy__tsickle_destructured_4;
      attributeSet.has(attribute$jscomp$0) && newElementPolicy.set(attribute$jscomp$0, attributePolicy);
    }
    elementPolicies.set(elementName, newElementPolicy);
  }
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(this.sanitizerTable.allowedElements, elementPolicies, allowedGlobalAttributes, globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.allowDataAttributes = function(attributes) {
  for (var allowedGlobalAttributes = new Set(this.sanitizerTable.allowedGlobalAttributes), $jscomp$iter$38 = $jscomp.makeIterator(attributes), $jscomp$key$435282654$5$attribute = $jscomp$iter$38.next(); !$jscomp$key$435282654$5$attribute.done; $jscomp$key$435282654$5$attribute = $jscomp$iter$38.next()) {
    var attribute = $jscomp$key$435282654$5$attribute.value;
    if (0 !== attribute.indexOf("data-")) {
      throw Error("data attribute: " + attribute + ' does not begin with the prefix "data-"');
    }
    allowedGlobalAttributes.add(attribute);
  }
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(this.sanitizerTable.allowedElements, this.sanitizerTable.elementPolicies, allowedGlobalAttributes, this.sanitizerTable.globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.allowStyleAttributes = function() {
  var globalAttributePolicies = new Map(this.sanitizerTable.globalAttributePolicies);
  globalAttributePolicies.set("style", {policyAction:module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.AttributePolicyAction.KEEP_AND_SANITIZE_STYLE});
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(this.sanitizerTable.allowedElements, this.sanitizerTable.elementPolicies, this.sanitizerTable.allowedGlobalAttributes, globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.allowClassAttributes = function() {
  var allowedGlobalAttributes = new Set(this.sanitizerTable.allowedGlobalAttributes);
  allowedGlobalAttributes.add("class");
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(this.sanitizerTable.allowedElements, this.sanitizerTable.elementPolicies, allowedGlobalAttributes, this.sanitizerTable.globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.allowIdAttributes = function() {
  var allowedGlobalAttributes = new Set(this.sanitizerTable.allowedGlobalAttributes);
  allowedGlobalAttributes.add("id");
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(this.sanitizerTable.allowedElements, this.sanitizerTable.elementPolicies, allowedGlobalAttributes, this.sanitizerTable.globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.allowIdReferenceAttributes = function() {
  var allowedGlobalAttributes = new Set(this.sanitizerTable.allowedGlobalAttributes);
  allowedGlobalAttributes.add("aria-activedescendant").add("aria-controls").add("aria-labelledby").add("aria-owns").add("for").add("list");
  this.sanitizerTable = new module$exports$safevalues$builders$html_sanitizer$sanitizer_table$sanitizer_table.SanitizerTable(this.sanitizerTable.allowedElements, this.sanitizerTable.elementPolicies, allowedGlobalAttributes, this.sanitizerTable.globalAttributePolicies);
  return this;
};
module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder.prototype.build = function() {
  if (this.calledBuild) {
    throw Error("this sanitizer has already called build");
  }
  this.calledBuild = !0;
  return new module$exports$safevalues$builders$html_sanitizer$html_sanitizer.HtmlSanitizerImpl(this.sanitizerTable, module$exports$safevalues$internals$secrets.secretToken);
};
var module$exports$safevalues$builders$resource_url_builders = {}, module$contents$safevalues$builders$resource_url_builders_module = module$contents$safevalues$builders$resource_url_builders_module || {id:"third_party/javascript/safevalues/builders/resource_url_builders.closure.js"}, module$contents$safevalues$builders$resource_url_builders_Primitive;
function module$contents$safevalues$builders$resource_url_builders_hasValidOrigin(base) {
  if (!/^https:\/\//.test(base) && !/^\/\//.test(base)) {
    return !1;
  }
  var originStart = base.indexOf("//") + 2, originEnd = base.indexOf("/", originStart);
  if (originEnd <= originStart) {
    throw Error("Can't interpolate data in a url's origin, Please make sure to fully specify the origin, terminated with '/'.");
  }
  var origin = base.substring(originStart, originEnd);
  if (!/^[0-9a-z.:-]+$/i.test(origin)) {
    throw Error("The origin contains unsupported characters.");
  }
  if (!/^[^:]*(:[0-9]+)?$/i.test(origin)) {
    throw Error("Invalid port number.");
  }
  if (!/(^|\.)[a-z][^.]*$/i.test(origin)) {
    throw Error("The top-level domain must start with a letter.");
  }
  return !0;
}
function module$contents$safevalues$builders$resource_url_builders_isValidAboutUrl(base) {
  if (!/^about:blank/.test(base)) {
    return !1;
  }
  if ("about:blank" !== base && !/^about:blank#/.test(base)) {
    throw Error("The about url is invalid.");
  }
  return !0;
}
function module$contents$safevalues$builders$resource_url_builders_isValidPathStart(base) {
  if (!/^\//.test(base)) {
    return !1;
  }
  if ("/" === base || 1 < base.length && "/" !== base[1] && "\\" !== base[1]) {
    return !0;
  }
  throw Error("The path start in the url is invalid.");
}
function module$contents$safevalues$builders$resource_url_builders_isValidRelativePathStart(base) {
  return RegExp("^[^:\\s\\\\/]+/").test(base);
}
function module$contents$safevalues$builders$resource_url_builders_getUrlSegments(url) {
  var segments = url.split(/\?|#/), params = /\?/.test(url) ? "?" + segments[1] : "";
  return {path:segments[0], params:params, hash:/#/.test(url) ? "#" + (params ? segments[2] : segments[1]) : ""};
}
function module$contents$safevalues$builders$resource_url_builders_trustedResourceUrl(templateObj) {
  var rest = $jscomp.getRestArguments.apply(1, arguments);
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, rest.length);
  if (0 === rest.length) {
    return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(templateObj[0]);
  }
  var base = templateObj[0].toLowerCase();
  if (goog.DEBUG) {
    if (/^data:/.test(base)) {
      throw Error("Data URLs cannot have expressions in the template literal input.");
    }
    if (!(module$contents$safevalues$builders$resource_url_builders_hasValidOrigin(base) || module$contents$safevalues$builders$resource_url_builders_isValidPathStart(base) || module$contents$safevalues$builders$resource_url_builders_isValidRelativePathStart(base) || module$contents$safevalues$builders$resource_url_builders_isValidAboutUrl(base))) {
      throw Error("Trying to interpolate expressions in an unsupported url format.");
    }
  }
  for (var url = templateObj[0], i = 0; i < rest.length; i++) {
    url += encodeURIComponent(rest[i]) + templateObj[i + 1];
  }
  return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(url);
}
module$exports$safevalues$builders$resource_url_builders.trustedResourceUrl = module$contents$safevalues$builders$resource_url_builders_trustedResourceUrl;
function module$contents$safevalues$builders$resource_url_builders_appendParams(trustedUrl, params) {
  var urlSegments = module$contents$safevalues$builders$resource_url_builders_getUrlSegments(module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(trustedUrl).toString()), urlParams = urlSegments.params, separator = urlParams.length ? "&" : "?";
  params.forEach(function(value, key) {
    for (var values = value instanceof Array ? value : [value], i = 0; i < values.length; i++) {
      var v = values[i];
      null !== v && void 0 !== v && (urlParams += separator + encodeURIComponent(key) + "=" + encodeURIComponent(String(v)), separator = "&");
    }
  });
  return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(urlSegments.path + urlParams + urlSegments.hash);
}
module$exports$safevalues$builders$resource_url_builders.appendParams = module$contents$safevalues$builders$resource_url_builders_appendParams;
var module$contents$safevalues$builders$resource_url_builders_BEFORE_FRAGMENT_REGEXP = /[^#]*/;
function module$contents$safevalues$builders$resource_url_builders_replaceFragment(trustedUrl, fragment) {
  var urlString = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(trustedUrl).toString();
  return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(module$contents$safevalues$builders$resource_url_builders_BEFORE_FRAGMENT_REGEXP.exec(urlString)[0] + "#" + fragment);
}
module$exports$safevalues$builders$resource_url_builders.replaceFragment = module$contents$safevalues$builders$resource_url_builders_replaceFragment;
function module$contents$safevalues$builders$resource_url_builders_appendPathSegment(trustedUrl, pathSegment) {
  var urlSegments = module$contents$safevalues$builders$resource_url_builders_getUrlSegments(module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(trustedUrl).toString()), separator = "/" === urlSegments.path.slice(-1) ? "" : "/", newPath = urlSegments.path + separator + encodeURIComponent(pathSegment);
  return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(newPath + urlSegments.params + urlSegments.hash);
}
module$exports$safevalues$builders$resource_url_builders.appendPathSegment = module$contents$safevalues$builders$resource_url_builders_appendPathSegment;
function module$contents$safevalues$builders$resource_url_builders_objectUrlFromScript(safeScript) {
  var scriptContent = module$contents$safevalues$internals$script_impl_unwrapScript(safeScript).toString();
  return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(URL.createObjectURL(new Blob([scriptContent], {type:"text/javascript"})));
}
module$exports$safevalues$builders$resource_url_builders.objectUrlFromScript = module$contents$safevalues$builders$resource_url_builders_objectUrlFromScript;
function module$contents$safevalues$builders$resource_url_builders_toAbsoluteResourceUrl(pathRelativeUrl) {
  var originalUrl = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl(pathRelativeUrl).toString(), qualifiedUrl = new URL(originalUrl, window.document.baseURI);
  return module$contents$safevalues$internals$resource_url_impl_createResourceUrlInternal(qualifiedUrl.toString());
}
module$exports$safevalues$builders$resource_url_builders.toAbsoluteResourceUrl = module$contents$safevalues$builders$resource_url_builders_toAbsoluteResourceUrl;
var module$exports$safevalues$builders$script_builders = {}, module$contents$safevalues$builders$script_builders_module = module$contents$safevalues$builders$script_builders_module || {id:"third_party/javascript/safevalues/builders/script_builders.closure.js"}, module$contents$safevalues$builders$script_builders_Primitive, module$contents$safevalues$builders$script_builders_Serializable;
function module$contents$safevalues$builders$script_builders_safeScript(templateObj) {
  var emptyArgs = $jscomp.getRestArguments.apply(1, arguments);
  if (goog.DEBUG) {
    if (emptyArgs.some(function(a) {
      return "" !== a;
    })) {
      throw Error("safeScript only allows empty string expressions to enable inline comments.");
    }
    module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, emptyArgs.length);
  }
  return module$contents$safevalues$internals$script_impl_createScriptInternal(templateObj.join(""));
}
module$exports$safevalues$builders$script_builders.safeScript = module$contents$safevalues$builders$script_builders_safeScript;
function module$contents$safevalues$builders$script_builders_concatScripts(scripts) {
  return module$contents$safevalues$internals$script_impl_createScriptInternal(scripts.map(module$contents$safevalues$internals$script_impl_unwrapScript).join(""));
}
module$exports$safevalues$builders$script_builders.concatScripts = module$contents$safevalues$builders$script_builders_concatScripts;
function module$contents$safevalues$builders$script_builders_valueAsScript(value) {
  return module$contents$safevalues$internals$script_impl_createScriptInternal(JSON.stringify(value).replace(/</g, "\\u003C"));
}
module$exports$safevalues$builders$script_builders.valueAsScript = module$contents$safevalues$builders$script_builders_valueAsScript;
function module$contents$safevalues$builders$script_builders_safeScriptWithArgs(templateObj) {
  var emptyArgs = $jscomp.getRestArguments.apply(1, arguments);
  if (goog.DEBUG) {
    if (emptyArgs.some(function(a) {
      return "" !== a;
    })) {
      throw Error("safeScriptWithArgs only allows empty string expressions to enable inline comments.");
    }
    module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, emptyArgs.length);
  }
  return function() {
    var values = $jscomp.getRestArguments.apply(0, arguments).map(function(v) {
      return module$contents$safevalues$builders$script_builders_valueAsScript(v).toString();
    });
    return module$contents$safevalues$internals$script_impl_createScriptInternal("(" + templateObj.join("") + ")(" + values.join(",") + ")");
  };
}
module$exports$safevalues$builders$script_builders.safeScriptWithArgs = module$contents$safevalues$builders$script_builders_safeScriptWithArgs;
var module$exports$safevalues$builders$style_builders = {}, module$contents$safevalues$builders$style_builders_module = module$contents$safevalues$builders$style_builders_module || {id:"third_party/javascript/safevalues/builders/style_builders.closure.js"};
function module$contents$safevalues$builders$style_builders_safeStyle(templateObj) {
  var rest = $jscomp.getRestArguments.apply(1, arguments);
  goog.DEBUG && module$contents$safevalues$internals$string_literal_assertIsTemplateObject(templateObj, rest.length);
  for (var stringifiedStyle = templateObj[0], i = 0; i < templateObj.length - 1; i++) {
    stringifiedStyle += String(rest[i]) + templateObj[i + 1];
  }
  if (/[<>]/.test(stringifiedStyle)) {
    throw Error("Forbidden characters in style string: " + stringifiedStyle);
  }
  if (goog.DEBUG) {
    if (0 === stringifiedStyle.length) {
      return module$contents$safevalues$internals$style_impl_createStyleInternal(stringifiedStyle);
    }
    if (!/;$/.test(stringifiedStyle)) {
      throw Error('Style string does not end with ";": ' + stringifiedStyle);
    }
    if (!/:/.test(stringifiedStyle)) {
      throw Error('Style string should contain one or more ":": ' + stringifiedStyle);
    }
  }
  return module$contents$safevalues$internals$style_impl_createStyleInternal(stringifiedStyle);
}
module$exports$safevalues$builders$style_builders.safeStyle = module$contents$safevalues$builders$style_builders_safeStyle;
function module$contents$safevalues$builders$style_builders_styleForMigration(style) {
  return module$contents$safevalues$internals$style_impl_createStyleInternal(style);
}
module$exports$safevalues$builders$style_builders.styleForMigration = module$contents$safevalues$builders$style_builders_styleForMigration;
function module$contents$safevalues$builders$style_builders_concatStyles(styles) {
  return module$contents$safevalues$internals$style_impl_createStyleInternal(styles.map(module$contents$safevalues$internals$style_impl_unwrapStyle).join(""));
}
module$exports$safevalues$builders$style_builders.concatStyles = module$contents$safevalues$builders$style_builders_concatStyles;
var module$exports$safevalues$reporting$reporting = {}, module$contents$safevalues$reporting$reporting_module = module$contents$safevalues$reporting$reporting_module || {id:"third_party/javascript/safevalues/reporting/reporting.closure.js"}, module$contents$safevalues$reporting$reporting_REPORTING_ID_PREFIX_TO_SAMPLING_RATE = {0:1, 1:1}, module$contents$safevalues$reporting$reporting_REPORTING_ID_PREFIX_TO_HEARTBEAT_RATE = 
{0:.1, 1:.1};
module$exports$safevalues$reporting$reporting.ReportingOptions = function() {
};
function module$contents$safevalues$reporting$reporting_reportOnlyHtmlPassthrough(s, options) {
  if (!options || !module$contents$safevalues$reporting$reporting_isCallSampled(options) || module$contents$safevalues$reporting$reporting_isReportingDisabled() || module$contents$safevalues$reporting$reporting_isBrowserIncompatibleWithSanitizing()) {
    return s;
  }
  module$contents$safevalues$reporting$reporting_maybeSendHeartbeat(options);
  module$contents$safevalues$reporting$reporting_isChangedBySanitizing(s, options) || module$contents$safevalues$reporting$reporting_isChangedByEscaping(s, options);
  return s;
}
module$exports$safevalues$reporting$reporting.reportOnlyHtmlPassthrough = module$contents$safevalues$reporting$reporting_reportOnlyHtmlPassthrough;
function module$contents$safevalues$reporting$reporting_isBrowserIncompatibleWithSanitizing() {
  return !("DocumentFragment" in window);
}
function module$contents$safevalues$reporting$reporting_isCallSampled(options) {
  var $jscomp$nullish$tmp1, $jscomp$nullish$tmp2;
  return Math.random() < (null != ($jscomp$nullish$tmp2 = null != ($jscomp$nullish$tmp1 = options.samplingRate) ? $jscomp$nullish$tmp1 : module$contents$safevalues$reporting$reporting_REPORTING_ID_PREFIX_TO_SAMPLING_RATE[options.reportingId[0]]) ? $jscomp$nullish$tmp2 : 0);
}
function module$contents$safevalues$reporting$reporting_isReportingDisabled() {
  return !1 === window.SAFEVALUES_REPORTING;
}
function module$contents$safevalues$reporting$reporting_maybeSendHeartbeat(options) {
  var $jscomp$nullish$tmp3, $jscomp$nullish$tmp4;
  Math.random() < (null != ($jscomp$nullish$tmp4 = null != ($jscomp$nullish$tmp3 = options.heartbeatRate) ? $jscomp$nullish$tmp3 : module$contents$safevalues$reporting$reporting_REPORTING_ID_PREFIX_TO_HEARTBEAT_RATE[options.reportingId[0]]) ? $jscomp$nullish$tmp4 : 0) && module$contents$safevalues$reporting$reporting_reportLegacyConversion(options, module$contents$safevalues$reporting$reporting_ReportingType.HEARTBEAT);
}
function module$contents$safevalues$reporting$reporting_isChangedByEscaping(s, options) {
  return (0,module$exports$safevalues$builders$html_builders.htmlEscape)(s).toString() !== s ? (module$contents$safevalues$reporting$reporting_reportLegacyConversion(options, module$contents$safevalues$reporting$reporting_ReportingType.HTML_CHANGED_BY_ESCAPING), !0) : !1;
}
function module$contents$safevalues$reporting$reporting_isChangedBySanitizing(s, options) {
  try {
    module$contents$safevalues$builders$html_sanitizer$html_sanitizer_superLenientlySanitizeHtmlAssertUnchanged(s);
  } catch (e) {
    var corpRe = /([.]corp[.]google[.]com|[.]proxy[.]googleprod[.]com|[.]googlers[.]com)$/;
    goog.DEBUG && corpRe.test(window.location.hostname) && e instanceof Error ? module$contents$safevalues$reporting$reporting_reportLegacyConversion(options, module$contents$safevalues$reporting$reporting_ReportingType.HTML_CHANGED_BY_SUPER_LENIENT_SANITIZING, e.message) : module$contents$safevalues$reporting$reporting_reportLegacyConversion(options, module$contents$safevalues$reporting$reporting_ReportingType.HTML_CHANGED_BY_SUPER_LENIENT_SANITIZING);
    return !0;
  }
  try {
    module$contents$safevalues$builders$html_sanitizer$html_sanitizer_lenientlySanitizeHtmlAssertUnchanged(s);
  } catch ($jscomp$unused$catch$696273141$0) {
    return module$contents$safevalues$reporting$reporting_reportLegacyConversion(options, module$contents$safevalues$reporting$reporting_ReportingType.HTML_CHANGED_BY_RELAXED_SANITIZING), !0;
  }
  try {
    module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlAssertUnchanged(s);
  } catch ($jscomp$unused$catch$696273141$1) {
    return module$contents$safevalues$reporting$reporting_reportLegacyConversion(options, module$contents$safevalues$reporting$reporting_ReportingType.HTML_CHANGED_BY_SANITIZING), !0;
  }
  return !1;
}
var module$contents$safevalues$reporting$reporting_ReportingType = {HEARTBEAT:"HEARTBEAT", CRASHED:"CRASHED", HTML_CHANGED_BY_ESCAPING:"H_ESCAPE", HTML_CHANGED_BY_SANITIZING:"H_SANITIZE", HTML_CHANGED_BY_RELAXED_SANITIZING:"H_RSANITIZE", HTML_CHANGED_BY_SUPER_LENIENT_SANITIZING:"H_SLSANITIZE"};
function module$contents$safevalues$reporting$reporting_reportLegacyConversion(options, type, additionalData) {
  var sendReport = void 0;
  sendReport = module$exports$safevalues$reporting$reporting.TEST_ONLY.sendReport ? module$exports$safevalues$reporting$reporting.TEST_ONLY.sendReport : "undefined" !== typeof window && window.navigator && void 0 !== window.navigator.sendBeacon ? navigator.sendBeacon.bind(navigator) : module$contents$safevalues$reporting$reporting_sendBeaconPolyfill;
  sendReport("https://csp.withgoogle.com/csp/lcreport/" + options.reportingId, JSON.stringify({host:window.location.hostname, type:type, additionalData:additionalData}));
}
function module$contents$safevalues$reporting$reporting_sendBeaconPolyfill(url, body) {
  var req = new XMLHttpRequest();
  req.open("POST", url);
  req.setRequestHeader("Content-Type", "application/json");
  req.send(body);
}
function module$contents$safevalues$reporting$reporting_TestOnlyOptions() {
}
module$exports$safevalues$reporting$reporting.TEST_ONLY = {reset:function() {
  module$exports$safevalues$reporting$reporting.TEST_ONLY.sendReport = void 0;
}};
var module$exports$safevalues$index = {}, module$contents$safevalues$index_module = module$contents$safevalues$index_module || {id:"third_party/javascript/safevalues/index.closure.js"};
module$exports$safevalues$index.safeAttrPrefix = module$contents$safevalues$builders$attribute_builders_safeAttrPrefix;
module$exports$safevalues$index.htmlFragment = module$contents$safevalues$builders$document_fragment_builders_htmlFragment;
module$exports$safevalues$index.htmlToNode = module$contents$safevalues$builders$document_fragment_builders_htmlToNode;
module$exports$safevalues$index.svgFragment = module$contents$safevalues$builders$document_fragment_builders_svgFragment;
module$exports$safevalues$index.concatHtmls = module$exports$safevalues$builders$html_builders.concatHtmls;
module$exports$safevalues$index.createHtml = module$exports$safevalues$builders$html_builders.createHtml;
module$exports$safevalues$index.doctypeHtml = module$exports$safevalues$builders$html_builders.doctypeHtml;
module$exports$safevalues$index.htmlEscape = module$exports$safevalues$builders$html_builders.htmlEscape;
module$exports$safevalues$index.joinHtmls = module$exports$safevalues$builders$html_builders.joinHtmls;
module$exports$safevalues$index.nodeToHtml = module$exports$safevalues$builders$html_builders.nodeToHtml;
module$exports$safevalues$index.scriptToHtml = module$exports$safevalues$builders$html_builders.scriptToHtml;
module$exports$safevalues$index.scriptUrlToHtml = module$exports$safevalues$builders$html_builders.scriptUrlToHtml;
module$exports$safevalues$index.styleSheetToHtml = module$exports$safevalues$builders$html_builders.styleSheetToHtml;
module$exports$safevalues$index.HtmlFormatter = module$exports$safevalues$builders$html_formatter.HtmlFormatter;
module$exports$safevalues$index.sanitizeHtml = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtml;
module$exports$safevalues$index.sanitizeHtmlAssertUnchanged = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlAssertUnchanged;
module$exports$safevalues$index.sanitizeHtmlToFragment = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlToFragment;
module$exports$safevalues$index.HtmlSanitizerBuilder = module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder;
module$exports$safevalues$index.appendParams = module$contents$safevalues$builders$resource_url_builders_appendParams;
module$exports$safevalues$index.appendPathSegment = module$contents$safevalues$builders$resource_url_builders_appendPathSegment;
module$exports$safevalues$index.objectUrlFromScript = module$contents$safevalues$builders$resource_url_builders_objectUrlFromScript;
module$exports$safevalues$index.replaceFragment = module$contents$safevalues$builders$resource_url_builders_replaceFragment;
module$exports$safevalues$index.toAbsoluteResourceUrl = module$contents$safevalues$builders$resource_url_builders_toAbsoluteResourceUrl;
module$exports$safevalues$index.trustedResourceUrl = module$contents$safevalues$builders$resource_url_builders_trustedResourceUrl;
module$exports$safevalues$index.concatScripts = module$contents$safevalues$builders$script_builders_concatScripts;
module$exports$safevalues$index.safeScript = module$contents$safevalues$builders$script_builders_safeScript;
module$exports$safevalues$index.safeScriptWithArgs = module$contents$safevalues$builders$script_builders_safeScriptWithArgs;
module$exports$safevalues$index.valueAsScript = module$contents$safevalues$builders$script_builders_valueAsScript;
module$exports$safevalues$index.concatStyles = module$contents$safevalues$builders$style_builders_concatStyles;
module$exports$safevalues$index.safeStyle = module$contents$safevalues$builders$style_builders_safeStyle;
module$exports$safevalues$index.styleForMigration = module$contents$safevalues$builders$style_builders_styleForMigration;
module$exports$safevalues$index.concatStyleSheets = module$contents$safevalues$builders$style_sheet_builders_concatStyleSheets;
module$exports$safevalues$index.safeStyleRule = module$contents$safevalues$builders$style_sheet_builders_safeStyleRule;
module$exports$safevalues$index.safeStyleSheet = module$contents$safevalues$builders$style_sheet_builders_safeStyleSheet;
module$exports$safevalues$index.SanitizableUrlScheme = module$exports$safevalues$builders$url_builders.SanitizableUrlScheme;
module$exports$safevalues$index.addJavaScriptUrlSanitizationCallback = module$contents$safevalues$builders$url_builders_addJavaScriptUrlSanitizationCallback;
module$exports$safevalues$index.fromMediaSource = module$contents$safevalues$builders$url_builders_fromMediaSource;
module$exports$safevalues$index.fromTrustedResourceUrl = module$contents$safevalues$builders$url_builders_fromTrustedResourceUrl;
module$exports$safevalues$index.objectUrlFromSafeSource = module$contents$safevalues$builders$url_builders_objectUrlFromSafeSource;
module$exports$safevalues$index.removeJavaScriptUrlSanitizationCallback = module$contents$safevalues$builders$url_builders_removeJavaScriptUrlSanitizationCallback;
module$exports$safevalues$index.safeUrl = module$contents$safevalues$builders$url_builders_safeUrl;
module$exports$safevalues$index.sanitizeUrl = module$contents$safevalues$builders$url_builders_sanitizeUrl;
module$exports$safevalues$index.trySanitizeUrl = module$contents$safevalues$builders$url_builders_trySanitizeUrl;
module$exports$safevalues$index.SafeAttributePrefix = module$exports$safevalues$internals$attribute_impl.SafeAttributePrefix;
module$exports$safevalues$index.unwrapAttributePrefix = module$contents$safevalues$internals$attribute_impl_unwrapAttributePrefix;
module$exports$safevalues$index.EMPTY_HTML = module$exports$safevalues$internals$html_impl.EMPTY_HTML;
module$exports$safevalues$index.SafeHtml = module$exports$safevalues$internals$html_impl.SafeHtml;
module$exports$safevalues$index.isHtml = module$exports$safevalues$internals$html_impl.isHtml;
module$exports$safevalues$index.unwrapHtml = module$exports$safevalues$internals$html_impl.unwrapHtml;
module$exports$safevalues$index.TrustedResourceUrl = goog.html.TrustedResourceUrl;
module$exports$safevalues$index.isResourceUrl = module$contents$safevalues$internals$resource_url_impl_isResourceUrl;
module$exports$safevalues$index.unwrapResourceUrl = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl;
module$exports$safevalues$index.EMPTY_SCRIPT = module$exports$safevalues$internals$script_impl.EMPTY_SCRIPT;
module$exports$safevalues$index.SafeScript = module$exports$safevalues$internals$script_impl.SafeScript;
module$exports$safevalues$index.isScript = module$contents$safevalues$internals$script_impl_isScript;
module$exports$safevalues$index.unwrapScript = module$contents$safevalues$internals$script_impl_unwrapScript;
module$exports$safevalues$index.SafeStyle = module$contents$goog$html$SafeStyle_SafeStyle;
module$exports$safevalues$index.isStyle = module$contents$safevalues$internals$style_impl_isStyle;
module$exports$safevalues$index.unwrapStyle = module$contents$safevalues$internals$style_impl_unwrapStyle;
module$exports$safevalues$index.SafeStyleSheet = module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;
module$exports$safevalues$index.isStyleSheet = module$contents$safevalues$internals$style_sheet_impl_isStyleSheet;
module$exports$safevalues$index.unwrapStyleSheet = module$contents$safevalues$internals$style_sheet_impl_unwrapStyleSheet;
module$exports$safevalues$index.ABOUT_BLANK = module$exports$safevalues$internals$url_impl.ABOUT_BLANK;
module$exports$safevalues$index.INNOCUOUS_URL = module$exports$safevalues$internals$url_impl.INNOCUOUS_URL;
module$exports$safevalues$index.SafeUrl = module$exports$safevalues$internals$url_impl.SafeUrl;
module$exports$safevalues$index.isUrl = module$contents$safevalues$internals$url_impl_isUrl;
module$exports$safevalues$index.unwrapUrl = module$contents$safevalues$internals$url_impl_unwrapUrl;
module$exports$safevalues$index.reportOnlyHtmlPassthrough = module$contents$safevalues$reporting$reporting_reportOnlyHtmlPassthrough;
goog.dom.safe = {};
goog.dom.safe.InsertAdjacentHtmlPosition = {AFTERBEGIN:"afterbegin", AFTEREND:"afterend", BEFOREBEGIN:"beforebegin", BEFOREEND:"beforeend"};
goog.dom.safe.insertAdjacentHtml = function(node, position, html) {
  node.insertAdjacentHTML(position, module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(html));
};
goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_ = {MATH:!0, SCRIPT:!0, STYLE:!0, SVG:!0, TEMPLATE:!0};
goog.dom.safe.isInnerHtmlCleanupRecursive_ = goog.functions.cacheReturnValue(function() {
  if (goog.DEBUG && "undefined" === typeof document) {
    return !1;
  }
  var div = document.createElement("div"), childDiv = document.createElement("div");
  childDiv.appendChild(document.createElement("div"));
  div.appendChild(childDiv);
  if (goog.DEBUG && !div.firstChild) {
    return !1;
  }
  var innerChild = div.firstChild.firstChild;
  div.innerHTML = module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);
  return !innerChild.parentElement;
});
goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse = function(elem, html) {
  if (goog.dom.safe.isInnerHtmlCleanupRecursive_()) {
    for (; elem.lastChild;) {
      elem.removeChild(elem.lastChild);
    }
  }
  elem.innerHTML = module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(html);
};
goog.dom.safe.setInnerHtml = function(elem, html) {
  if (goog.asserts.ENABLE_ASSERTS && elem.tagName && goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[elem.tagName.toUpperCase()]) {
    throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of " + elem.tagName + ".");
  }
  goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(elem, html);
};
goog.dom.safe.setInnerHtmlFromConstant = function(element, constHtml) {
  goog.dom.safe.setInnerHtml(element, module$contents$safevalues$restricted$reviewed_htmlSafeByReview(goog.string.Const.unwrap(constHtml), {justification:"Constant HTML to be immediatelly used."}));
};
goog.dom.safe.setOuterHtml = function(elem, html) {
  elem.outerHTML = module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(html);
};
goog.dom.safe.setFormElementAction = function(form, url) {
  module$contents$goog$asserts$dom_assertIsHtmlFormElement(form).action = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
};
goog.dom.safe.setButtonFormAction = function(button, url) {
  module$contents$goog$asserts$dom_assertIsHtmlButtonElement(button).formAction = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
};
goog.dom.safe.setInputFormAction = function(input, url) {
  module$contents$goog$asserts$dom_assertIsHtmlInputElement(input).formAction = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
};
goog.dom.safe.documentWrite = function(doc, html) {
  doc.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(html));
};
goog.dom.safe.setAnchorHref = function(anchor, url) {
  module$contents$goog$asserts$dom_assertIsHtmlAnchorElement(anchor);
  anchor.href = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
};
goog.dom.safe.setAudioSrc = function(audioElement, url) {
  module$contents$goog$asserts$dom_assertIsHtmlAudioElement(audioElement);
  audioElement.src = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
};
goog.dom.safe.setVideoSrc = function(videoElement, url) {
  module$contents$goog$asserts$dom_assertIsHtmlVideoElement(videoElement);
  videoElement.src = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
};
goog.dom.safe.setIframeSrc = function(iframe, url) {
  module$contents$goog$asserts$dom_assertIsHtmlIFrameElement(iframe);
  iframe.src = goog.html.TrustedResourceUrl.unwrap(url);
};
goog.dom.safe.setIframeSrcdoc = function(iframe, html) {
  module$contents$goog$asserts$dom_assertIsHtmlIFrameElement(iframe);
  iframe.srcdoc = module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(html);
};
goog.dom.safe.setLinkHrefAndRel = function(link, url, rel) {
  module$contents$goog$asserts$dom_assertIsHtmlLinkElement(link);
  link.rel = rel;
  if (goog.string.internal.caseInsensitiveContains(rel, "stylesheet")) {
    goog.asserts.assert(url instanceof goog.html.TrustedResourceUrl, 'URL must be TrustedResourceUrl because "rel" contains "stylesheet"');
    link.href = goog.html.TrustedResourceUrl.unwrap(url);
    var nonce = goog.dom.safe.getStyleNonce(link.ownerDocument && link.ownerDocument.defaultView);
    nonce && link.setAttribute("nonce", nonce);
  } else {
    link.href = url instanceof goog.html.TrustedResourceUrl ? goog.html.TrustedResourceUrl.unwrap(url) : goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
  }
};
goog.dom.safe.setScriptSrc = function(script, url) {
  module$contents$goog$asserts$dom_assertIsHtmlScriptElement(script);
  goog.dom.safe.setNonceForScriptElement_(script);
  script.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(url);
};
goog.dom.safe.setNonceForScriptElement_ = function(script) {
  var nonce = goog.dom.safe.getScriptNonce(script.ownerDocument && script.ownerDocument.defaultView);
  nonce && script.setAttribute("nonce", nonce);
};
goog.dom.safe.setLocationHref = function(loc, url) {
  goog.dom.asserts.assertIsLocation(loc);
  loc.href = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url);
};
goog.dom.safe.assignLocation = function(loc, url) {
  goog.dom.asserts.assertIsLocation(loc);
  loc.assign(goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url));
};
goog.dom.safe.replaceLocation = function(loc, url) {
  loc.replace(goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url));
};
goog.dom.safe.openInWindow = function(url, opt_openerWin, opt_name, opt_specs) {
  var sanitizedUrl = goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_(url), win = opt_openerWin || goog.global, name = opt_name instanceof goog.string.Const ? goog.string.Const.unwrap(opt_name) : opt_name || "";
  return void 0 !== opt_specs ? win.open(sanitizedUrl, name, opt_specs) : win.open(sanitizedUrl, name);
};
goog.dom.safe.parseFromStringHtml = function(parser, html) {
  return goog.dom.safe.parseFromString(parser, html, "text/html");
};
goog.dom.safe.parseFromString = function(parser, content, type) {
  return parser.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(content), type);
};
goog.dom.safe.createImageFromBlob = function(blob) {
  if (!/^image\/.*/g.test(blob.type)) {
    throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");
  }
  var objectUrl = goog.global.URL.createObjectURL(blob), image = new goog.global.Image(), revokeFn = function() {
    goog.global.URL.revokeObjectURL(objectUrl);
  };
  image.onload = revokeFn;
  image.onerror = revokeFn;
  image.src = objectUrl;
  return image;
};
goog.dom.safe.getScriptNonce = function(opt_window) {
  return goog.dom.safe.getNonce_("script[nonce]", opt_window);
};
goog.dom.safe.getStyleNonce = function(opt_window) {
  return goog.dom.safe.getNonce_('style[nonce],link[rel="stylesheet"][nonce]', opt_window);
};
goog.dom.safe.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/;
goog.dom.safe.getNonce_ = function(selector, win) {
  var doc = (win || goog.global).document;
  if (!doc.querySelector) {
    return "";
  }
  var el = doc.querySelector(selector);
  if (el) {
    var nonce = el.nonce || el.getAttribute("nonce");
    if (nonce && goog.dom.safe.NONCE_PATTERN_.test(nonce)) {
      return nonce;
    }
  }
  return "";
};
goog.dom.safe.sanitizeJavaScriptUrlAssertUnchanged_ = function(url) {
  var sanitizedUrl = module$contents$safevalues$builders$url_builders_unwrapUrlOrSanitize(url);
  return goog.asserts.assert(void 0 !== sanitizedUrl, "%s is a javascript: URL", url) ? sanitizedUrl : module$exports$safevalues$internals$url_impl.INNOCUOUS_URL.toString();
};
goog.math.Coordinate = function(opt_x, opt_y) {
  this.x = void 0 !== opt_x ? opt_x : 0;
  this.y = void 0 !== opt_y ? opt_y : 0;
};
goog.math.Coordinate.prototype.clone = function() {
  return new goog.math.Coordinate(this.x, this.y);
};
goog.DEBUG && (goog.math.Coordinate.prototype.toString = function() {
  return "(" + this.x + ", " + this.y + ")";
});
goog.math.Coordinate.prototype.equals = function(other) {
  return other instanceof goog.math.Coordinate && goog.math.Coordinate.equals(this, other);
};
goog.math.Coordinate.equals = function(a, b) {
  return a == b ? !0 : a && b ? a.x == b.x && a.y == b.y : !1;
};
goog.math.Coordinate.distance = function(a, b) {
  var dx = a.x - b.x, dy = a.y - b.y;
  return Math.sqrt(dx * dx + dy * dy);
};
goog.math.Coordinate.magnitude = function(a) {
  return Math.sqrt(a.x * a.x + a.y * a.y);
};
goog.math.Coordinate.azimuth = function(a) {
  return goog.math.angle(0, 0, a.x, a.y);
};
goog.math.Coordinate.squaredDistance = function(a, b) {
  var dx = a.x - b.x, dy = a.y - b.y;
  return dx * dx + dy * dy;
};
goog.math.Coordinate.difference = function(a, b) {
  return new goog.math.Coordinate(a.x - b.x, a.y - b.y);
};
goog.math.Coordinate.sum = function(a, b) {
  return new goog.math.Coordinate(a.x + b.x, a.y + b.y);
};
goog.math.Coordinate.prototype.ceil = function() {
  this.x = Math.ceil(this.x);
  this.y = Math.ceil(this.y);
  return this;
};
goog.math.Coordinate.prototype.floor = function() {
  this.x = Math.floor(this.x);
  this.y = Math.floor(this.y);
  return this;
};
goog.math.Coordinate.prototype.round = function() {
  this.x = Math.round(this.x);
  this.y = Math.round(this.y);
  return this;
};
goog.math.Coordinate.prototype.translate = function(tx, opt_ty) {
  tx instanceof goog.math.Coordinate ? (this.x += tx.x, this.y += tx.y) : (this.x += Number(tx), "number" === typeof opt_ty && (this.y += opt_ty));
  return this;
};
goog.math.Coordinate.prototype.scale = function(sx, opt_sy) {
  var sy;
  this.x *= sx;
  this.y *= "number" === typeof opt_sy ? opt_sy : sx;
  return this;
};
goog.math.Coordinate.prototype.rotateRadians = function(radians, opt_center) {
  var center = opt_center || new goog.math.Coordinate(0, 0), x = this.x, y = this.y, cos = Math.cos(radians), sin = Math.sin(radians);
  this.x = (x - center.x) * cos - (y - center.y) * sin + center.x;
  this.y = (x - center.x) * sin + (y - center.y) * cos + center.y;
};
goog.math.Coordinate.prototype.rotateDegrees = function(degrees, opt_center) {
  this.rotateRadians(goog.math.toRadians(degrees), opt_center);
};
goog.math.Size = function(width, height) {
  this.width = width;
  this.height = height;
};
goog.math.Size.equals = function(a, b) {
  return a == b ? !0 : a && b ? a.width == b.width && a.height == b.height : !1;
};
goog.math.Size.prototype.clone = function() {
  return new goog.math.Size(this.width, this.height);
};
goog.DEBUG && (goog.math.Size.prototype.toString = function() {
  return "(" + this.width + " x " + this.height + ")";
});
goog.math.Size.prototype.getLongest = function() {
  return Math.max(this.width, this.height);
};
goog.math.Size.prototype.getShortest = function() {
  return Math.min(this.width, this.height);
};
goog.math.Size.prototype.area = function() {
  return this.width * this.height;
};
goog.math.Size.prototype.perimeter = function() {
  return 2 * (this.width + this.height);
};
goog.math.Size.prototype.aspectRatio = function() {
  return this.width / this.height;
};
goog.math.Size.prototype.isEmpty = function() {
  return !this.area();
};
goog.math.Size.prototype.ceil = function() {
  this.width = Math.ceil(this.width);
  this.height = Math.ceil(this.height);
  return this;
};
goog.math.Size.prototype.fitsInside = function(target) {
  return this.width <= target.width && this.height <= target.height;
};
goog.math.Size.prototype.floor = function() {
  this.width = Math.floor(this.width);
  this.height = Math.floor(this.height);
  return this;
};
goog.math.Size.prototype.round = function() {
  this.width = Math.round(this.width);
  this.height = Math.round(this.height);
  return this;
};
goog.math.Size.prototype.scale = function(sx, opt_sy) {
  var sy;
  this.width *= sx;
  this.height *= "number" === typeof opt_sy ? opt_sy : sx;
  return this;
};
goog.math.Size.prototype.scaleToCover = function(target) {
  var s = this.aspectRatio() <= target.aspectRatio() ? target.width / this.width : target.height / this.height;
  return this.scale(s);
};
goog.math.Size.prototype.scaleToFit = function(target) {
  var s = this.aspectRatio() > target.aspectRatio() ? target.width / this.width : target.height / this.height;
  return this.scale(s);
};
goog.dom.Appendable = {};
goog.dom.ASSUME_QUIRKS_MODE = !1;
goog.dom.ASSUME_STANDARDS_MODE = !1;
goog.dom.COMPAT_MODE_KNOWN_ = goog.dom.ASSUME_QUIRKS_MODE || goog.dom.ASSUME_STANDARDS_MODE;
goog.dom.getDomHelper = function(opt_element) {
  return opt_element ? new goog.dom.DomHelper(goog.dom.getOwnerDocument(opt_element)) : goog.dom.defaultDomHelper_ || (goog.dom.defaultDomHelper_ = new goog.dom.DomHelper());
};
goog.dom.getDocument = function() {
  return document;
};
goog.dom.getElement = function(element) {
  return goog.dom.getElementHelper_(document, element);
};
goog.dom.getHTMLElement = function(id) {
  var element = goog.dom.getElement(id);
  return element ? module$contents$goog$asserts$dom_assertIsHtmlElement(element) : null;
};
goog.dom.getElementHelper_ = function(doc, element) {
  return "string" === typeof element ? doc.getElementById(element) : element;
};
goog.dom.getRequiredElement = function(id) {
  return goog.dom.getRequiredElementHelper_(document, id);
};
goog.dom.getRequiredHTMLElement = function(id) {
  return module$contents$goog$asserts$dom_assertIsHtmlElement(goog.dom.getRequiredElementHelper_(document, id));
};
goog.dom.getRequiredElementHelper_ = function(doc, id) {
  goog.asserts.assertString(id);
  var element = goog.dom.getElementHelper_(doc, id);
  return goog.asserts.assert(element, "No element found with id: " + id);
};
goog.dom.$ = goog.dom.getElement;
goog.dom.getElementsByTagName = function(tagName, opt_parent) {
  return (opt_parent || document).getElementsByTagName(String(tagName));
};
goog.dom.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) {
  return goog.dom.getElementsByTagNameAndClass_(document, opt_tag, opt_class, opt_el);
};
goog.dom.getElementByTagNameAndClass = function(opt_tag, opt_class, opt_el) {
  return goog.dom.getElementByTagNameAndClass_(document, opt_tag, opt_class, opt_el);
};
goog.dom.getElementsByClass = function(className, opt_el) {
  var parent = opt_el || document;
  return goog.dom.canUseQuerySelector_(parent) ? parent.querySelectorAll("." + className) : goog.dom.getElementsByTagNameAndClass_(document, "*", className, opt_el);
};
goog.dom.getElementByClass = function(className, opt_el) {
  var parent = opt_el || document, retVal = null;
  return (retVal = parent.getElementsByClassName ? parent.getElementsByClassName(className)[0] : goog.dom.getElementByTagNameAndClass_(document, "*", className, opt_el)) || null;
};
goog.dom.getHTMLElementByClass = function(className, opt_parent) {
  var element = goog.dom.getElementByClass(className, opt_parent);
  return element ? module$contents$goog$asserts$dom_assertIsHtmlElement(element) : null;
};
goog.dom.getRequiredElementByClass = function(className, opt_root) {
  var retValue = goog.dom.getElementByClass(className, opt_root);
  return goog.asserts.assert(retValue, "No element found with className: " + className);
};
goog.dom.getRequiredHTMLElementByClass = function(className, opt_parent) {
  var retValue = goog.dom.getElementByClass(className, opt_parent);
  goog.asserts.assert(retValue, "No HTMLElement found with className: " + className);
  return module$contents$goog$asserts$dom_assertIsHtmlElement(retValue);
};
goog.dom.canUseQuerySelector_ = function(parent) {
  return !(!parent.querySelectorAll || !parent.querySelector);
};
goog.dom.getElementsByTagNameAndClass_ = function(doc, opt_tag, opt_class, opt_el) {
  var parent = opt_el || doc, tagName = opt_tag && "*" != opt_tag ? String(opt_tag).toUpperCase() : "";
  if (goog.dom.canUseQuerySelector_(parent) && (tagName || opt_class)) {
    return parent.querySelectorAll(tagName + (opt_class ? "." + opt_class : ""));
  }
  if (opt_class && parent.getElementsByClassName) {
    var els = parent.getElementsByClassName(opt_class);
    if (tagName) {
      for (var arrayLike = {}, len = 0, i = 0, el; el = els[i]; i++) {
        tagName == el.nodeName && (arrayLike[len++] = el);
      }
      arrayLike.length = len;
      return arrayLike;
    }
    return els;
  }
  els = parent.getElementsByTagName(tagName || "*");
  if (opt_class) {
    arrayLike = {};
    for (i = len = 0; el = els[i]; i++) {
      var className = el.className;
      "function" == typeof className.split && module$contents$goog$array_contains(className.split(/\s+/), opt_class) && (arrayLike[len++] = el);
    }
    arrayLike.length = len;
    return arrayLike;
  }
  return els;
};
goog.dom.getElementByTagNameAndClass_ = function(doc, opt_tag, opt_class, opt_el) {
  var parent = opt_el || doc, tag = opt_tag && "*" != opt_tag ? String(opt_tag).toUpperCase() : "";
  return goog.dom.canUseQuerySelector_(parent) && (tag || opt_class) ? parent.querySelector(tag + (opt_class ? "." + opt_class : "")) : goog.dom.getElementsByTagNameAndClass_(doc, opt_tag, opt_class, opt_el)[0] || null;
};
goog.dom.$$ = goog.dom.getElementsByTagNameAndClass;
goog.dom.setProperties = function(element, properties) {
  module$contents$goog$object_forEach(properties, function(val, key) {
    "style" == key ? element.style.cssText = val : "class" == key ? element.className = val : "for" == key ? element.htmlFor = val : goog.dom.DIRECT_ATTRIBUTE_MAP_.hasOwnProperty(key) ? element.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[key], val) : goog.string.startsWith(key, "aria-") || goog.string.startsWith(key, "data-") ? element.setAttribute(key, val) : element[key] = val;
  });
};
goog.dom.DIRECT_ATTRIBUTE_MAP_ = {cellpadding:"cellPadding", cellspacing:"cellSpacing", colspan:"colSpan", frameborder:"frameBorder", height:"height", maxlength:"maxLength", nonce:"nonce", role:"role", rowspan:"rowSpan", type:"type", usemap:"useMap", valign:"vAlign", width:"width"};
goog.dom.getViewportSize = function(opt_window) {
  return goog.dom.getViewportSize_(opt_window || window);
};
goog.dom.getViewportSize_ = function(win) {
  var doc = win.document, el = goog.dom.isCss1CompatMode_(doc) ? doc.documentElement : doc.body;
  return new goog.math.Size(el.clientWidth, el.clientHeight);
};
goog.dom.getDocumentHeight = function() {
  return goog.dom.getDocumentHeight_(window);
};
goog.dom.getDocumentHeightForWindow = function(win) {
  return goog.dom.getDocumentHeight_(win);
};
goog.dom.getDocumentHeight_ = function(win) {
  var doc = win.document, height = 0;
  if (doc) {
    var body = doc.body, docEl = doc.documentElement;
    if (!docEl || !body) {
      return 0;
    }
    var vh = goog.dom.getViewportSize_(win).height;
    if (goog.dom.isCss1CompatMode_(doc) && docEl.scrollHeight) {
      height = docEl.scrollHeight != vh ? docEl.scrollHeight : docEl.offsetHeight;
    } else {
      var sh = docEl.scrollHeight, oh = docEl.offsetHeight;
      docEl.clientHeight != oh && (sh = body.scrollHeight, oh = body.offsetHeight);
      height = sh > vh ? sh > oh ? sh : oh : sh < oh ? sh : oh;
    }
  }
  return height;
};
goog.dom.getPageScroll = function(opt_window) {
  return goog.dom.getDomHelper((opt_window || goog.global || window).document).getDocumentScroll();
};
goog.dom.getDocumentScroll = function() {
  return goog.dom.getDocumentScroll_(document);
};
goog.dom.getDocumentScroll_ = function(doc) {
  var el = goog.dom.getDocumentScrollElement_(doc), win = goog.dom.getWindow_(doc);
  return new goog.math.Coordinate(win.pageXOffset || el.scrollLeft, win.pageYOffset || el.scrollTop);
};
goog.dom.getDocumentScrollElement = function() {
  return goog.dom.getDocumentScrollElement_(document);
};
goog.dom.getDocumentScrollElement_ = function(doc) {
  return doc.scrollingElement ? doc.scrollingElement : !goog.userAgent.WEBKIT && goog.dom.isCss1CompatMode_(doc) ? doc.documentElement : doc.body || doc.documentElement;
};
goog.dom.getWindow = function(opt_doc) {
  return opt_doc ? goog.dom.getWindow_(opt_doc) : window;
};
goog.dom.getWindow_ = function(doc) {
  return doc.parentWindow || doc.defaultView;
};
goog.dom.createDom = function(tagName, opt_attributes, var_args) {
  return goog.dom.createDom_(document, arguments);
};
goog.dom.createDom_ = function(doc, args) {
  var attributes = args[1], element = goog.dom.createElement_(doc, String(args[0]));
  attributes && ("string" === typeof attributes ? element.className = attributes : Array.isArray(attributes) ? element.className = attributes.join(" ") : goog.dom.setProperties(element, attributes));
  2 < args.length && goog.dom.append_(doc, element, args, 2);
  return element;
};
goog.dom.append_ = function(doc, parent, args, startIndex) {
  function childHandler(child) {
    child && parent.appendChild("string" === typeof child ? doc.createTextNode(child) : child);
  }
  for (var i = startIndex; i < args.length; i++) {
    var arg = args[i];
    goog.isArrayLike(arg) && !goog.dom.isNodeLike(arg) ? module$contents$goog$array_forEach(goog.dom.isNodeList(arg) ? module$contents$goog$array_toArray(arg) : arg, childHandler) : childHandler(arg);
  }
};
goog.dom.$dom = goog.dom.createDom;
goog.dom.createElement = function(name) {
  return goog.dom.createElement_(document, name);
};
goog.dom.createElement_ = function(doc, name) {
  name = String(name);
  "application/xhtml+xml" === doc.contentType && (name = name.toLowerCase());
  return doc.createElement(name);
};
goog.dom.createTextNode = function(content) {
  return document.createTextNode(String(content));
};
goog.dom.createTable = function(rows, columns, opt_fillWithNbsp) {
  return goog.dom.createTable_(document, rows, columns, !!opt_fillWithNbsp);
};
goog.dom.createTable_ = function(doc, rows, columns, fillWithNbsp) {
  for (var table = goog.dom.createElement_(doc, goog.dom.TagName.TABLE), tbody = table.appendChild(goog.dom.createElement_(doc, goog.dom.TagName.TBODY)), i = 0; i < rows; i++) {
    for (var tr = goog.dom.createElement_(doc, goog.dom.TagName.TR), j = 0; j < columns; j++) {
      var td = goog.dom.createElement_(doc, goog.dom.TagName.TD);
      fillWithNbsp && goog.dom.setTextContent(td, goog.string.Unicode.NBSP);
      tr.appendChild(td);
    }
    tbody.appendChild(tr);
  }
  return table;
};
goog.dom.constHtmlToNode = function(var_args) {
  var stringArray = Array.prototype.map.call(arguments, goog.string.Const.unwrap), safeHtml = module$contents$safevalues$restricted$reviewed_htmlSafeByReview(stringArray.join(""), {justification:"Constant HTML string, that gets turned into a Node later, so it will be automatically balanced."});
  return goog.dom.safeHtmlToNode(safeHtml);
};
goog.dom.safeHtmlToNode = function(html) {
  return goog.dom.safeHtmlToNode_(document, html);
};
goog.dom.safeHtmlToNode_ = function(doc, html) {
  var tempDiv = goog.dom.createElement_(doc, goog.dom.TagName.DIV);
  goog.dom.safe.setInnerHtml(tempDiv, html);
  return goog.dom.childrenToNode_(doc, tempDiv);
};
goog.dom.childrenToNode_ = function(doc, tempDiv) {
  if (1 == tempDiv.childNodes.length) {
    return tempDiv.removeChild(goog.asserts.assert(tempDiv.firstChild));
  }
  for (var fragment = doc.createDocumentFragment(); tempDiv.firstChild;) {
    fragment.appendChild(tempDiv.firstChild);
  }
  return fragment;
};
goog.dom.isCss1CompatMode = function() {
  return goog.dom.isCss1CompatMode_(document);
};
goog.dom.isCss1CompatMode_ = function(doc) {
  return goog.dom.COMPAT_MODE_KNOWN_ ? goog.dom.ASSUME_STANDARDS_MODE : "CSS1Compat" == doc.compatMode;
};
goog.dom.canHaveChildren = function(node) {
  if (node.nodeType != goog.dom.NodeType.ELEMENT) {
    return !1;
  }
  switch(node.tagName) {
    case String(goog.dom.TagName.APPLET):
    case String(goog.dom.TagName.AREA):
    case String(goog.dom.TagName.BASE):
    case String(goog.dom.TagName.BR):
    case String(goog.dom.TagName.COL):
    case String(goog.dom.TagName.COMMAND):
    case String(goog.dom.TagName.EMBED):
    case String(goog.dom.TagName.FRAME):
    case String(goog.dom.TagName.HR):
    case String(goog.dom.TagName.IMG):
    case String(goog.dom.TagName.INPUT):
    case String(goog.dom.TagName.IFRAME):
    case String(goog.dom.TagName.ISINDEX):
    case String(goog.dom.TagName.KEYGEN):
    case String(goog.dom.TagName.LINK):
    case String(goog.dom.TagName.NOFRAMES):
    case String(goog.dom.TagName.NOSCRIPT):
    case String(goog.dom.TagName.META):
    case String(goog.dom.TagName.OBJECT):
    case String(goog.dom.TagName.PARAM):
    case String(goog.dom.TagName.SCRIPT):
    case String(goog.dom.TagName.SOURCE):
    case String(goog.dom.TagName.STYLE):
    case String(goog.dom.TagName.TRACK):
    case String(goog.dom.TagName.WBR):
      return !1;
  }
  return !0;
};
goog.dom.appendChild = function(parent, child) {
  goog.asserts.assert(null != parent && null != child, "goog.dom.appendChild expects non-null arguments");
  parent.appendChild(child);
};
goog.dom.append = function(parent, var_args) {
  goog.dom.append_(goog.dom.getOwnerDocument(parent), parent, arguments, 1);
};
goog.dom.removeChildren = function(node) {
  for (var child; child = node.firstChild;) {
    node.removeChild(child);
  }
};
goog.dom.insertSiblingBefore = function(newNode, refNode) {
  goog.asserts.assert(null != newNode && null != refNode, "goog.dom.insertSiblingBefore expects non-null arguments");
  refNode.parentNode && refNode.parentNode.insertBefore(newNode, refNode);
};
goog.dom.insertSiblingAfter = function(newNode, refNode) {
  goog.asserts.assert(null != newNode && null != refNode, "goog.dom.insertSiblingAfter expects non-null arguments");
  refNode.parentNode && refNode.parentNode.insertBefore(newNode, refNode.nextSibling);
};
goog.dom.insertChildAt = function(parent, child, index) {
  goog.asserts.assert(null != parent, "goog.dom.insertChildAt expects a non-null parent");
  parent.insertBefore(child, parent.childNodes[index] || null);
};
goog.dom.removeNode = function(node) {
  return node && node.parentNode ? node.parentNode.removeChild(node) : null;
};
goog.dom.replaceNode = function(newNode, oldNode) {
  goog.asserts.assert(null != newNode && null != oldNode, "goog.dom.replaceNode expects non-null arguments");
  var parent = oldNode.parentNode;
  parent && parent.replaceChild(newNode, oldNode);
};
goog.dom.copyContents = function(target, source) {
  goog.asserts.assert(null != target && null != source, "goog.dom.copyContents expects non-null arguments");
  var childNodes = source.cloneNode(!0).childNodes;
  for (goog.dom.removeChildren(target); childNodes.length;) {
    target.appendChild(childNodes[0]);
  }
};
goog.dom.flattenElement = function(element) {
  var child, parent = element.parentNode;
  if (parent && parent.nodeType != goog.dom.NodeType.DOCUMENT_FRAGMENT) {
    if (element.removeNode) {
      return element.removeNode(!1);
    }
    for (; child = element.firstChild;) {
      parent.insertBefore(child, element);
    }
    return goog.dom.removeNode(element);
  }
};
goog.dom.getChildren = function(element) {
  return void 0 != element.children ? element.children : Array.prototype.filter.call(element.childNodes, function(node) {
    return node.nodeType == goog.dom.NodeType.ELEMENT;
  });
};
goog.dom.getFirstElementChild = function(node) {
  return void 0 !== node.firstElementChild ? node.firstElementChild : goog.dom.getNextElementNode_(node.firstChild, !0);
};
goog.dom.getLastElementChild = function(node) {
  return void 0 !== node.lastElementChild ? node.lastElementChild : goog.dom.getNextElementNode_(node.lastChild, !1);
};
goog.dom.getNextElementSibling = function(node) {
  return void 0 !== node.nextElementSibling ? node.nextElementSibling : goog.dom.getNextElementNode_(node.nextSibling, !0);
};
goog.dom.getPreviousElementSibling = function(node) {
  return void 0 !== node.previousElementSibling ? node.previousElementSibling : goog.dom.getNextElementNode_(node.previousSibling, !1);
};
goog.dom.getNextElementNode_ = function(node, forward) {
  for (; node && node.nodeType != goog.dom.NodeType.ELEMENT;) {
    node = forward ? node.nextSibling : node.previousSibling;
  }
  return node;
};
goog.dom.getNextNode = function(node) {
  if (!node) {
    return null;
  }
  if (node.firstChild) {
    return node.firstChild;
  }
  for (; node && !node.nextSibling;) {
    node = node.parentNode;
  }
  return node ? node.nextSibling : null;
};
goog.dom.getPreviousNode = function(node) {
  if (!node) {
    return null;
  }
  if (!node.previousSibling) {
    return node.parentNode;
  }
  for (node = node.previousSibling; node && node.lastChild;) {
    node = node.lastChild;
  }
  return node;
};
goog.dom.isNodeLike = function(obj) {
  return goog.isObject(obj) && 0 < obj.nodeType;
};
goog.dom.isElement = function(obj) {
  return goog.isObject(obj) && obj.nodeType == goog.dom.NodeType.ELEMENT;
};
goog.dom.isWindow = function(obj) {
  return goog.isObject(obj) && obj.window == obj;
};
goog.dom.getParentElement = function(element) {
  var parent;
  if (goog.userAgent.WEBKIT && (parent = element.parentElement)) {
    return parent;
  }
  parent = element.parentNode;
  return goog.dom.isElement(parent) ? parent : null;
};
goog.dom.contains = function(parent, descendant) {
  if (!parent || !descendant) {
    return !1;
  }
  if (parent.contains && descendant.nodeType == goog.dom.NodeType.ELEMENT) {
    return parent == descendant || parent.contains(descendant);
  }
  if ("undefined" != typeof parent.compareDocumentPosition) {
    return parent == descendant || !!(parent.compareDocumentPosition(descendant) & 16);
  }
  for (; descendant && parent != descendant;) {
    descendant = descendant.parentNode;
  }
  return descendant == parent;
};
goog.dom.compareNodeOrder = function(node1, node2) {
  if (node1 == node2) {
    return 0;
  }
  if (node1.compareDocumentPosition) {
    return node1.compareDocumentPosition(node2) & 2 ? 1 : -1;
  }
  if ("sourceIndex" in node1 || node1.parentNode && "sourceIndex" in node1.parentNode) {
    var isElement1 = node1.nodeType == goog.dom.NodeType.ELEMENT, isElement2 = node2.nodeType == goog.dom.NodeType.ELEMENT;
    if (isElement1 && isElement2) {
      return node1.sourceIndex - node2.sourceIndex;
    }
    var parent1 = node1.parentNode, parent2 = node2.parentNode;
    return parent1 == parent2 ? goog.dom.compareSiblingOrder_(node1, node2) : !isElement1 && goog.dom.contains(parent1, node2) ? -1 * goog.dom.compareParentsDescendantNodeIe_(node1, node2) : !isElement2 && goog.dom.contains(parent2, node1) ? goog.dom.compareParentsDescendantNodeIe_(node2, node1) : (isElement1 ? node1.sourceIndex : parent1.sourceIndex) - (isElement2 ? node2.sourceIndex : parent2.sourceIndex);
  }
  var doc = goog.dom.getOwnerDocument(node1);
  var range1 = doc.createRange();
  range1.selectNode(node1);
  range1.collapse(!0);
  var range2 = doc.createRange();
  range2.selectNode(node2);
  range2.collapse(!0);
  return range1.compareBoundaryPoints(goog.global.Range.START_TO_END, range2);
};
goog.dom.compareParentsDescendantNodeIe_ = function(textNode, node) {
  var parent = textNode.parentNode;
  if (parent == node) {
    return -1;
  }
  for (var sibling = node; sibling.parentNode != parent;) {
    sibling = sibling.parentNode;
  }
  return goog.dom.compareSiblingOrder_(sibling, textNode);
};
goog.dom.compareSiblingOrder_ = function(node1, node2) {
  for (var s = node2; s = s.previousSibling;) {
    if (s == node1) {
      return -1;
    }
  }
  return 1;
};
goog.dom.findCommonAncestor = function(var_args) {
  var i, count = arguments.length;
  if (!count) {
    return null;
  }
  if (1 == count) {
    return arguments[0];
  }
  var paths = [], minLength = Infinity;
  for (i = 0; i < count; i++) {
    for (var ancestors = [], node = arguments[i]; node;) {
      ancestors.unshift(node), node = node.parentNode;
    }
    paths.push(ancestors);
    minLength = Math.min(minLength, ancestors.length);
  }
  var output = null;
  for (i = 0; i < minLength; i++) {
    for (var first = paths[0][i], j = 1; j < count; j++) {
      if (first != paths[j][i]) {
        return output;
      }
    }
    output = first;
  }
  return output;
};
goog.dom.isInDocument = function(node) {
  return 16 == (node.ownerDocument.compareDocumentPosition(node) & 16);
};
goog.dom.getOwnerDocument = function(node) {
  goog.asserts.assert(node, "Node cannot be null or undefined.");
  return node.nodeType == goog.dom.NodeType.DOCUMENT ? node : node.ownerDocument || node.document;
};
goog.dom.getFrameContentDocument = function(frame) {
  return frame.contentDocument || frame.contentWindow.document;
};
goog.dom.getFrameContentWindow = function(frame) {
  try {
    return frame.contentWindow || (frame.contentDocument ? goog.dom.getWindow(frame.contentDocument) : null);
  } catch (e) {
  }
  return null;
};
goog.dom.setTextContent = function(node, text) {
  goog.asserts.assert(null != node, "goog.dom.setTextContent expects a non-null value for node");
  if ("textContent" in node) {
    node.textContent = text;
  } else if (node.nodeType == goog.dom.NodeType.TEXT) {
    node.data = String(text);
  } else if (node.firstChild && node.firstChild.nodeType == goog.dom.NodeType.TEXT) {
    for (; node.lastChild != node.firstChild;) {
      node.removeChild(goog.asserts.assert(node.lastChild));
    }
    node.firstChild.data = String(text);
  } else {
    goog.dom.removeChildren(node);
    var doc = goog.dom.getOwnerDocument(node);
    node.appendChild(doc.createTextNode(String(text)));
  }
};
goog.dom.getOuterHtml = function(element) {
  goog.asserts.assert(null !== element, "goog.dom.getOuterHtml expects a non-null value for element");
  if ("outerHTML" in element) {
    return element.outerHTML;
  }
  var doc = goog.dom.getOwnerDocument(element), div = goog.dom.createElement_(doc, goog.dom.TagName.DIV);
  div.appendChild(element.cloneNode(!0));
  return div.innerHTML;
};
goog.dom.findNode = function(root, p) {
  var rv = [];
  return goog.dom.findNodes_(root, p, rv, !0) ? rv[0] : void 0;
};
goog.dom.findNodes = function(root, p) {
  var rv = [];
  goog.dom.findNodes_(root, p, rv, !1);
  return rv;
};
goog.dom.findNodes_ = function(root, p, rv, findOne) {
  if (null != root) {
    for (var child = root.firstChild; child;) {
      if (p(child) && (rv.push(child), findOne) || goog.dom.findNodes_(child, p, rv, findOne)) {
        return !0;
      }
      child = child.nextSibling;
    }
  }
  return !1;
};
goog.dom.findElement = function(root, pred) {
  for (var stack = goog.dom.getChildrenReverse_(root); 0 < stack.length;) {
    var next = stack.pop();
    if (pred(next)) {
      return next;
    }
    for (var c = next.lastElementChild; c; c = c.previousElementSibling) {
      stack.push(c);
    }
  }
  return null;
};
goog.dom.findElements = function(root, pred) {
  for (var result = [], stack = goog.dom.getChildrenReverse_(root); 0 < stack.length;) {
    var next = stack.pop();
    pred(next) && result.push(next);
    for (var c = next.lastElementChild; c; c = c.previousElementSibling) {
      stack.push(c);
    }
  }
  return result;
};
goog.dom.getChildrenReverse_ = function(node) {
  if (node.nodeType == goog.dom.NodeType.DOCUMENT) {
    return [node.documentElement];
  }
  for (var children = [], c = node.lastElementChild; c; c = c.previousElementSibling) {
    children.push(c);
  }
  return children;
};
goog.dom.TAGS_TO_IGNORE_ = {SCRIPT:1, STYLE:1, HEAD:1, IFRAME:1, OBJECT:1};
goog.dom.PREDEFINED_TAG_VALUES_ = {IMG:" ", BR:"\n"};
goog.dom.isFocusableTabIndex = function(element) {
  return goog.dom.hasSpecifiedTabIndex_(element) && goog.dom.isTabIndexFocusable_(element);
};
goog.dom.setFocusableTabIndex = function(element, enable) {
  enable ? element.tabIndex = 0 : (element.tabIndex = -1, element.removeAttribute("tabIndex"));
};
goog.dom.isFocusable = function(element) {
  return goog.dom.nativelySupportsFocus_(element) ? !element.disabled && (!goog.dom.hasSpecifiedTabIndex_(element) || goog.dom.isTabIndexFocusable_(element)) : goog.dom.isFocusableTabIndex(element);
};
goog.dom.hasSpecifiedTabIndex_ = function(element) {
  return element.hasAttribute("tabindex");
};
goog.dom.isTabIndexFocusable_ = function(element) {
  var index = element.tabIndex;
  return "number" === typeof index && 0 <= index && 32768 > index;
};
goog.dom.nativelySupportsFocus_ = function(element) {
  return element.tagName == goog.dom.TagName.A && element.hasAttribute("href") || element.tagName == goog.dom.TagName.INPUT || element.tagName == goog.dom.TagName.TEXTAREA || element.tagName == goog.dom.TagName.SELECT || element.tagName == goog.dom.TagName.BUTTON;
};
goog.dom.hasNonZeroBoundingRect_ = function(element) {
  var rect = "function" !== typeof element.getBoundingClientRect ? {height:element.offsetHeight, width:element.offsetWidth} : element.getBoundingClientRect();
  return null != rect && 0 < rect.height && 0 < rect.width;
};
goog.dom.getTextContent = function(node) {
  var buf = [];
  goog.dom.getTextContent_(node, buf, !0);
  var textContent = buf.join("");
  textContent = textContent.replace(/ \xAD /g, " ").replace(/\xAD/g, "");
  textContent = textContent.replace(/\u200B/g, "");
  textContent = textContent.replace(/ +/g, " ");
  " " != textContent && (textContent = textContent.replace(/^\s*/, ""));
  return textContent;
};
goog.dom.getRawTextContent = function(node) {
  var buf = [];
  goog.dom.getTextContent_(node, buf, !1);
  return buf.join("");
};
goog.dom.getTextContent_ = function(node, buf, normalizeWhitespace) {
  if (!(node.nodeName in goog.dom.TAGS_TO_IGNORE_)) {
    if (node.nodeType == goog.dom.NodeType.TEXT) {
      normalizeWhitespace ? buf.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, "")) : buf.push(node.nodeValue);
    } else if (node.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) {
      buf.push(goog.dom.PREDEFINED_TAG_VALUES_[node.nodeName]);
    } else {
      for (var child = node.firstChild; child;) {
        goog.dom.getTextContent_(child, buf, normalizeWhitespace), child = child.nextSibling;
      }
    }
  }
};
goog.dom.getNodeTextLength = function(node) {
  return goog.dom.getTextContent(node).length;
};
goog.dom.getNodeTextOffset = function(node, opt_offsetParent) {
  for (var root = opt_offsetParent || goog.dom.getOwnerDocument(node).body, buf = []; node && node != root;) {
    for (var cur = node; cur = cur.previousSibling;) {
      buf.unshift(goog.dom.getTextContent(cur));
    }
    node = node.parentNode;
  }
  return goog.string.trimLeft(buf.join("")).replace(/ +/g, " ").length;
};
goog.dom.getNodeAtOffset = function(parent, offset, opt_result) {
  for (var stack = [parent], pos = 0, cur = null; 0 < stack.length && pos < offset;) {
    if (cur = stack.pop(), !(cur.nodeName in goog.dom.TAGS_TO_IGNORE_)) {
      if (cur.nodeType == goog.dom.NodeType.TEXT) {
        var text = cur.nodeValue.replace(/(\r\n|\r|\n)/g, "").replace(/ +/g, " ");
        pos += text.length;
      } else if (cur.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) {
        pos += goog.dom.PREDEFINED_TAG_VALUES_[cur.nodeName].length;
      } else {
        for (var i = cur.childNodes.length - 1; 0 <= i; i--) {
          stack.push(cur.childNodes[i]);
        }
      }
    }
  }
  goog.isObject(opt_result) && (opt_result.remainder = cur ? cur.nodeValue.length + offset - pos - 1 : 0, opt_result.node = cur);
  return cur;
};
goog.dom.isNodeList = function(val) {
  if (val && "number" == typeof val.length) {
    if (goog.isObject(val)) {
      return "function" == typeof val.item || "string" == typeof val.item;
    }
    if ("function" === typeof val) {
      return "function" == typeof val.item;
    }
  }
  return !1;
};
goog.dom.getAncestorByTagNameAndClass = function(element, opt_tag, opt_class, opt_maxSearchSteps) {
  if (!opt_tag && !opt_class) {
    return null;
  }
  var tagName = opt_tag ? String(opt_tag).toUpperCase() : null;
  return goog.dom.getAncestor(element, function(node) {
    return (!tagName || node.nodeName == tagName) && (!opt_class || "string" === typeof node.className && module$contents$goog$array_contains(node.className.split(/\s+/), opt_class));
  }, !0, opt_maxSearchSteps);
};
goog.dom.getAncestorByClass = function(element, className, opt_maxSearchSteps) {
  return goog.dom.getAncestorByTagNameAndClass(element, null, className, opt_maxSearchSteps);
};
goog.dom.getAncestor = function(element, matcher, opt_includeNode, opt_maxSearchSteps) {
  element && !opt_includeNode && (element = element.parentNode);
  for (var steps = 0; element && (null == opt_maxSearchSteps || steps <= opt_maxSearchSteps);) {
    goog.asserts.assert("parentNode" != element.name);
    if (matcher(element)) {
      return element;
    }
    element = element.parentNode;
    steps++;
  }
  return null;
};
goog.dom.getActiveElement = function(doc) {
  try {
    var activeElement = doc && doc.activeElement;
    return activeElement && activeElement.nodeName ? activeElement : null;
  } catch (e) {
    return null;
  }
};
goog.dom.getPixelRatio = function() {
  var win = goog.dom.getWindow();
  return void 0 !== win.devicePixelRatio ? win.devicePixelRatio : win.matchMedia ? goog.dom.matchesPixelRatio_(3) || goog.dom.matchesPixelRatio_(2) || goog.dom.matchesPixelRatio_(1.5) || goog.dom.matchesPixelRatio_(1) || .75 : 1;
};
goog.dom.matchesPixelRatio_ = function(pixelRatio) {
  return goog.dom.getWindow().matchMedia("(min-resolution: " + pixelRatio + "dppx),(min--moz-device-pixel-ratio: " + pixelRatio + "),(min-resolution: " + 96 * pixelRatio + "dpi)").matches ? pixelRatio : 0;
};
goog.dom.getCanvasContext2D = function(canvas) {
  return canvas.getContext("2d");
};
goog.dom.DomHelper = function(opt_document) {
  this.document_ = opt_document || goog.global.document || document;
};
goog.dom.DomHelper.prototype.getDomHelper = goog.dom.getDomHelper;
goog.dom.DomHelper.prototype.setDocument = function(document) {
  this.document_ = document;
};
goog.dom.DomHelper.prototype.getDocument = function() {
  return this.document_;
};
goog.dom.DomHelper.prototype.getElement = function(element) {
  return goog.dom.getElementHelper_(this.document_, element);
};
goog.dom.DomHelper.prototype.getRequiredElement = function(id) {
  return goog.dom.getRequiredElementHelper_(this.document_, id);
};
goog.dom.DomHelper.prototype.$ = goog.dom.DomHelper.prototype.getElement;
goog.dom.DomHelper.prototype.getElementsByTagName = function(tagName, opt_parent) {
  return (opt_parent || this.document_).getElementsByTagName(String(tagName));
};
goog.dom.DomHelper.prototype.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) {
  return goog.dom.getElementsByTagNameAndClass_(this.document_, opt_tag, opt_class, opt_el);
};
goog.dom.DomHelper.prototype.getElementByTagNameAndClass = function(opt_tag, opt_class, opt_el) {
  return goog.dom.getElementByTagNameAndClass_(this.document_, opt_tag, opt_class, opt_el);
};
goog.dom.DomHelper.prototype.getElementsByClass = function(className, opt_el) {
  return goog.dom.getElementsByClass(className, opt_el || this.document_);
};
goog.dom.DomHelper.prototype.getElementByClass = function(className, opt_el) {
  return goog.dom.getElementByClass(className, opt_el || this.document_);
};
goog.dom.DomHelper.prototype.getRequiredElementByClass = function(className, opt_root) {
  return goog.dom.getRequiredElementByClass(className, opt_root || this.document_);
};
goog.dom.DomHelper.prototype.$$ = goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;
goog.dom.DomHelper.prototype.setProperties = goog.dom.setProperties;
goog.dom.DomHelper.prototype.getViewportSize = function(opt_window) {
  return goog.dom.getViewportSize(opt_window || this.getWindow());
};
goog.dom.DomHelper.prototype.getDocumentHeight = function() {
  return goog.dom.getDocumentHeight_(this.getWindow());
};
goog.dom.DomHelper.prototype.createDom = function(tagName, opt_attributes, var_args) {
  return goog.dom.createDom_(this.document_, arguments);
};
goog.dom.DomHelper.prototype.$dom = goog.dom.DomHelper.prototype.createDom;
goog.dom.DomHelper.prototype.createElement = function(name) {
  return goog.dom.createElement_(this.document_, name);
};
goog.dom.DomHelper.prototype.createTextNode = function(content) {
  return this.document_.createTextNode(String(content));
};
goog.dom.DomHelper.prototype.createTable = function(rows, columns, opt_fillWithNbsp) {
  return goog.dom.createTable_(this.document_, rows, columns, !!opt_fillWithNbsp);
};
goog.dom.DomHelper.prototype.safeHtmlToNode = function(html) {
  return goog.dom.safeHtmlToNode_(this.document_, html);
};
goog.dom.DomHelper.prototype.isCss1CompatMode = function() {
  return goog.dom.isCss1CompatMode_(this.document_);
};
goog.dom.DomHelper.prototype.getWindow = function() {
  return goog.dom.getWindow_(this.document_);
};
goog.dom.DomHelper.prototype.getDocumentScrollElement = function() {
  return goog.dom.getDocumentScrollElement_(this.document_);
};
goog.dom.DomHelper.prototype.getDocumentScroll = function() {
  return goog.dom.getDocumentScroll_(this.document_);
};
goog.dom.DomHelper.prototype.getActiveElement = function(opt_doc) {
  return goog.dom.getActiveElement(opt_doc || this.document_);
};
goog.dom.DomHelper.prototype.appendChild = goog.dom.appendChild;
goog.dom.DomHelper.prototype.append = goog.dom.append;
goog.dom.DomHelper.prototype.canHaveChildren = goog.dom.canHaveChildren;
goog.dom.DomHelper.prototype.removeChildren = goog.dom.removeChildren;
goog.dom.DomHelper.prototype.insertSiblingBefore = goog.dom.insertSiblingBefore;
goog.dom.DomHelper.prototype.insertSiblingAfter = goog.dom.insertSiblingAfter;
goog.dom.DomHelper.prototype.insertChildAt = goog.dom.insertChildAt;
goog.dom.DomHelper.prototype.removeNode = goog.dom.removeNode;
goog.dom.DomHelper.prototype.replaceNode = goog.dom.replaceNode;
goog.dom.DomHelper.prototype.copyContents = goog.dom.copyContents;
goog.dom.DomHelper.prototype.flattenElement = goog.dom.flattenElement;
goog.dom.DomHelper.prototype.getChildren = goog.dom.getChildren;
goog.dom.DomHelper.prototype.getFirstElementChild = goog.dom.getFirstElementChild;
goog.dom.DomHelper.prototype.getLastElementChild = goog.dom.getLastElementChild;
goog.dom.DomHelper.prototype.getNextElementSibling = goog.dom.getNextElementSibling;
goog.dom.DomHelper.prototype.getPreviousElementSibling = goog.dom.getPreviousElementSibling;
goog.dom.DomHelper.prototype.getNextNode = goog.dom.getNextNode;
goog.dom.DomHelper.prototype.getPreviousNode = goog.dom.getPreviousNode;
goog.dom.DomHelper.prototype.isNodeLike = goog.dom.isNodeLike;
goog.dom.DomHelper.prototype.isElement = goog.dom.isElement;
goog.dom.DomHelper.prototype.isWindow = goog.dom.isWindow;
goog.dom.DomHelper.prototype.getParentElement = goog.dom.getParentElement;
goog.dom.DomHelper.prototype.contains = goog.dom.contains;
goog.dom.DomHelper.prototype.compareNodeOrder = goog.dom.compareNodeOrder;
goog.dom.DomHelper.prototype.findCommonAncestor = goog.dom.findCommonAncestor;
goog.dom.DomHelper.prototype.getOwnerDocument = goog.dom.getOwnerDocument;
goog.dom.DomHelper.prototype.getFrameContentDocument = goog.dom.getFrameContentDocument;
goog.dom.DomHelper.prototype.getFrameContentWindow = goog.dom.getFrameContentWindow;
goog.dom.DomHelper.prototype.setTextContent = goog.dom.setTextContent;
goog.dom.DomHelper.prototype.getOuterHtml = goog.dom.getOuterHtml;
goog.dom.DomHelper.prototype.findNode = goog.dom.findNode;
goog.dom.DomHelper.prototype.findNodes = goog.dom.findNodes;
goog.dom.DomHelper.prototype.isFocusableTabIndex = goog.dom.isFocusableTabIndex;
goog.dom.DomHelper.prototype.setFocusableTabIndex = goog.dom.setFocusableTabIndex;
goog.dom.DomHelper.prototype.isFocusable = goog.dom.isFocusable;
goog.dom.DomHelper.prototype.getTextContent = goog.dom.getTextContent;
goog.dom.DomHelper.prototype.getNodeTextLength = goog.dom.getNodeTextLength;
goog.dom.DomHelper.prototype.getNodeTextOffset = goog.dom.getNodeTextOffset;
goog.dom.DomHelper.prototype.getNodeAtOffset = goog.dom.getNodeAtOffset;
goog.dom.DomHelper.prototype.isNodeList = goog.dom.isNodeList;
goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass = goog.dom.getAncestorByTagNameAndClass;
goog.dom.DomHelper.prototype.getAncestorByClass = goog.dom.getAncestorByClass;
goog.dom.DomHelper.prototype.getAncestor = goog.dom.getAncestor;
goog.dom.DomHelper.prototype.getCanvasContext2D = goog.dom.getCanvasContext2D;
goog.async.nextTick = function(callback, opt_context, opt_useSetImmediate) {
  var cb = callback;
  opt_context && (cb = goog.bind(callback, opt_context));
  cb = goog.async.nextTick.wrapCallback_(cb);
  "function" === typeof goog.global.setImmediate && (opt_useSetImmediate || goog.async.nextTick.useSetImmediate_()) ? goog.global.setImmediate(cb) : (goog.async.nextTick.nextTickImpl || (goog.async.nextTick.nextTickImpl = goog.async.nextTick.getNextTickImpl_()), goog.async.nextTick.nextTickImpl(cb));
};
goog.async.nextTick.useSetImmediate_ = function() {
  return goog.global.Window && goog.global.Window.prototype && goog.global.Window.prototype.setImmediate == goog.global.setImmediate ? !1 : !0;
};
goog.async.nextTick.getNextTickImpl_ = function() {
  var Channel = goog.global.MessageChannel;
  "undefined" === typeof Channel && "undefined" !== typeof window && window.postMessage && window.addEventListener && !module$contents$goog$labs$userAgent$engine_isPresto() && (Channel = function() {
    var iframe = goog.dom.createElement(goog.dom.TagName.IFRAME);
    iframe.style.display = "none";
    document.documentElement.appendChild(iframe);
    var win = iframe.contentWindow, doc = win.document;
    doc.open();
    doc.close();
    var message = "callImmediate" + Math.random(), origin = "file:" == win.location.protocol ? "*" : win.location.protocol + "//" + win.location.host, onmessage = goog.bind(function(e) {
      if (("*" == origin || e.origin == origin) && e.data == message) {
        this.port1.onmessage();
      }
    }, this);
    win.addEventListener("message", onmessage, !1);
    this.port1 = {};
    this.port2 = {postMessage:function() {
      win.postMessage(message, origin);
    }};
  });
  if ("undefined" !== typeof Channel) {
    var channel = new Channel(), head = {}, tail = head;
    channel.port1.onmessage = function() {
      if (void 0 !== head.next) {
        head = head.next;
        var cb = head.cb;
        head.cb = null;
        cb();
      }
    };
    return function(cb) {
      tail.next = {cb:cb};
      tail = tail.next;
      channel.port2.postMessage(0);
    };
  }
  return function(cb) {
    goog.global.setTimeout(cb, 0);
  };
};
goog.async.nextTick.wrapCallback_ = goog.functions.identity;
goog.debug.entryPointRegistry.register(function(transformer) {
  goog.async.nextTick.wrapCallback_ = transformer;
});
function module$contents$goog$async$throwException_throwException(exception) {
  goog.global.setTimeout(function() {
    throw exception;
  }, 0);
}
goog.async.throwException = module$contents$goog$async$throwException_throwException;
var module$contents$goog$async$WorkQueue_WorkQueue = function() {
  this.workTail_ = this.workHead_ = null;
};
module$contents$goog$async$WorkQueue_WorkQueue.prototype.add = function(fn, scope) {
  var item = this.getUnusedItem_();
  item.set(fn, scope);
  this.workTail_ ? this.workTail_.next = item : ((0,goog.asserts.assert)(!this.workHead_), this.workHead_ = item);
  this.workTail_ = item;
};
module$contents$goog$async$WorkQueue_WorkQueue.prototype.remove = function() {
  var item = null;
  this.workHead_ && (item = this.workHead_, this.workHead_ = this.workHead_.next, this.workHead_ || (this.workTail_ = null), item.next = null);
  return item;
};
module$contents$goog$async$WorkQueue_WorkQueue.prototype.returnUnused = function(item) {
  module$contents$goog$async$WorkQueue_WorkQueue.freelist_.put(item);
};
module$contents$goog$async$WorkQueue_WorkQueue.prototype.getUnusedItem_ = function() {
  return module$contents$goog$async$WorkQueue_WorkQueue.freelist_.get();
};
module$contents$goog$async$WorkQueue_WorkQueue.DEFAULT_MAX_UNUSED = 100;
module$contents$goog$async$WorkQueue_WorkQueue.freelist_ = new module$contents$goog$async$FreeList_FreeList(function() {
  return new module$contents$goog$async$WorkQueue_WorkItem();
}, function(item) {
  return item.reset();
}, module$contents$goog$async$WorkQueue_WorkQueue.DEFAULT_MAX_UNUSED);
var module$contents$goog$async$WorkQueue_WorkItem = function() {
  this.next = this.scope = this.fn = null;
};
module$contents$goog$async$WorkQueue_WorkItem.prototype.set = function(fn, scope) {
  this.fn = fn;
  this.scope = scope;
  this.next = null;
};
module$contents$goog$async$WorkQueue_WorkItem.prototype.reset = function() {
  this.next = this.scope = this.fn = null;
};
goog.async.WorkQueue = module$contents$goog$async$WorkQueue_WorkQueue;
goog.debug.asyncStackTag = {};
var module$contents$goog$debug$asyncStackTag_DEBUG = goog.DEBUG, module$contents$goog$debug$asyncStackTag_createTask = goog.DEBUG && goog.global.console && goog.global.console.createTask ? goog.global.console.createTask.bind(goog.global.console) : void 0, module$contents$goog$debug$asyncStackTag_CONSOLE_TASK_SYMBOL = module$contents$goog$debug$asyncStackTag_createTask ? Symbol("consoleTask") : void 0;
function module$contents$goog$debug$asyncStackTag_wrap(fn, name) {
  function wrappedFn() {
    var args = $jscomp.getRestArguments.apply(0, arguments), $jscomp$this$1621498202$4 = this;
    return consoleTask.run(function() {
      return fn.call.apply(fn, [$jscomp$this$1621498202$4].concat($jscomp.arrayFromIterable(args)));
    });
  }
  name = void 0 === name ? "anonymous" : name;
  if (!goog.DEBUG || module$contents$goog$debug$asyncStackTag_CONSOLE_TASK_SYMBOL && fn[module$contents$goog$debug$asyncStackTag_CONSOLE_TASK_SYMBOL]) {
    return fn;
  }
  var originalFn = fn, $jscomp$optchain$tmp1621498202$0, originalTest = null == ($jscomp$optchain$tmp1621498202$0 = module$contents$goog$debug$asyncStackTag_testNameProvider) ? void 0 : $jscomp$optchain$tmp1621498202$0();
  fn = function() {
    var args = $jscomp.getRestArguments.apply(0, arguments), $jscomp$optchain$tmp1621498202$1, currentTest = null == ($jscomp$optchain$tmp1621498202$1 = module$contents$goog$debug$asyncStackTag_testNameProvider) ? void 0 : $jscomp$optchain$tmp1621498202$1();
    if (originalTest !== currentTest) {
      throw Error(name + " was scheduled in '" + originalTest + "' but called in '" + currentTest + "'.\nMake sure your test awaits all async calls.\n\nTIP: To help investigate, debug the test in Chrome and look at the async portion\nof the call stack to see what originally scheduled the callback.  Then, make the\ntest wait for the relevant asynchronous work to finish.");
    }
    return originalFn.call.apply(originalFn, [this].concat($jscomp.arrayFromIterable(args)));
  };
  if (!module$contents$goog$debug$asyncStackTag_createTask) {
    return fn;
  }
  var consoleTask = module$contents$goog$debug$asyncStackTag_createTask(fn.name || name);
  wrappedFn[(0,goog.asserts.assertExists)(module$contents$goog$debug$asyncStackTag_CONSOLE_TASK_SYMBOL)] = consoleTask;
  return wrappedFn;
}
goog.debug.asyncStackTag.wrap = module$contents$goog$debug$asyncStackTag_wrap;
var module$contents$goog$debug$asyncStackTag_testNameProvider;
goog.debug.asyncStackTag.setTestNameProvider = function(provider) {
  if (!goog.DEBUG) {
    throw Error("This feature is debug-only");
  }
  module$contents$goog$debug$asyncStackTag_testNameProvider = provider;
};
goog.debug.asyncStackTag.getTestNameProvider = function() {
  if (!goog.DEBUG) {
    throw Error("This feature is debug-only");
  }
  return module$contents$goog$debug$asyncStackTag_testNameProvider;
};
goog.ASSUME_NATIVE_PROMISE = !1;
var module$contents$goog$async$run_schedule, module$contents$goog$async$run_workQueueScheduled = !1, module$contents$goog$async$run_workQueue = new module$contents$goog$async$WorkQueue_WorkQueue(), module$contents$goog$async$run_run = function(callback, context) {
  module$contents$goog$async$run_schedule || module$contents$goog$async$run_initializeRunner();
  module$contents$goog$async$run_workQueueScheduled || (module$contents$goog$async$run_schedule(), module$contents$goog$async$run_workQueueScheduled = !0);
  callback = module$contents$goog$debug$asyncStackTag_wrap(callback, "goog.async.run");
  module$contents$goog$async$run_workQueue.add(callback, context);
}, module$contents$goog$async$run_initializeRunner = function() {
  if (goog.ASSUME_NATIVE_PROMISE || goog.global.Promise && goog.global.Promise.resolve) {
    var promise = goog.global.Promise.resolve(void 0);
    module$contents$goog$async$run_schedule = function() {
      promise.then(module$contents$goog$async$run_run.processWorkQueue);
    };
  } else {
    module$contents$goog$async$run_schedule = function() {
      (0,goog.async.nextTick)(module$contents$goog$async$run_run.processWorkQueue);
    };
  }
};
module$contents$goog$async$run_run.forceNextTick = function(realSetTimeout) {
  module$contents$goog$async$run_schedule = function() {
    (0,goog.async.nextTick)(module$contents$goog$async$run_run.processWorkQueue);
    realSetTimeout && realSetTimeout(module$contents$goog$async$run_run.processWorkQueue);
  };
};
goog.DEBUG && (module$contents$goog$async$run_run.resetQueue = function() {
  module$contents$goog$async$run_workQueueScheduled = !1;
  module$contents$goog$async$run_workQueue = new module$contents$goog$async$WorkQueue_WorkQueue();
}, module$contents$goog$async$run_run.resetSchedulerForTest = function() {
  module$contents$goog$async$run_initializeRunner();
});
module$contents$goog$async$run_run.processWorkQueue = function() {
  for (var item = null; item = module$contents$goog$async$run_workQueue.remove();) {
    try {
      item.fn.call(item.scope);
    } catch (e) {
      module$contents$goog$async$throwException_throwException(e);
    }
    module$contents$goog$async$run_workQueue.returnUnused(item);
  }
  module$contents$goog$async$run_workQueueScheduled = !1;
};
goog.async.run = module$contents$goog$async$run_run;
goog.promise = {};
goog.promise.Resolver = function() {
};
function module$contents$goog$Thenable_Thenable() {
}
module$contents$goog$Thenable_Thenable.prototype.then = function(opt_onFulfilled, opt_onRejected, opt_context) {
};
module$contents$goog$Thenable_Thenable.IMPLEMENTED_BY_PROP = "$goog_Thenable";
module$contents$goog$Thenable_Thenable.addImplementation = function(ctor) {
  ctor.prototype[module$contents$goog$Thenable_Thenable.IMPLEMENTED_BY_PROP] = !0;
};
module$contents$goog$Thenable_Thenable.isImplementedBy = function(object) {
  if (!object) {
    return !1;
  }
  try {
    return !!object[module$contents$goog$Thenable_Thenable.IMPLEMENTED_BY_PROP];
    return !!object.$goog_Thenable;
  } catch (e) {
    return !1;
  }
};
goog.Thenable = module$contents$goog$Thenable_Thenable;
goog.Promise = function(resolver, opt_context) {
  this.state_ = goog.Promise.State_.PENDING;
  this.result_ = void 0;
  this.callbackEntriesTail_ = this.callbackEntries_ = this.parent_ = null;
  this.executing_ = !1;
  0 < goog.Promise.UNHANDLED_REJECTION_DELAY ? this.unhandledRejectionId_ = 0 : 0 == goog.Promise.UNHANDLED_REJECTION_DELAY && (this.hadUnhandledRejection_ = !1);
  goog.Promise.LONG_STACK_TRACES && (this.stack_ = [], this.addStackTrace_(Error("created")), this.currentStep_ = 0);
  if (resolver != goog.functions.UNDEFINED) {
    try {
      var self = this;
      resolver.call(opt_context, function(value) {
        self.resolve_(goog.Promise.State_.FULFILLED, value);
      }, function(reason) {
        if (goog.DEBUG && !(reason instanceof goog.Promise.CancellationError)) {
          try {
            if (reason instanceof Error) {
              throw reason;
            }
            throw Error("Promise rejected.");
          } catch (e) {
          }
        }
        self.resolve_(goog.Promise.State_.REJECTED, reason);
      });
    } catch (e) {
      this.resolve_(goog.Promise.State_.REJECTED, e);
    }
  }
};
goog.Promise.LONG_STACK_TRACES = !1;
goog.Promise.UNHANDLED_REJECTION_DELAY = 0;
goog.Promise.State_ = {PENDING:0, BLOCKED:1, FULFILLED:2, REJECTED:3};
goog.Promise.CallbackEntry_ = function() {
  this.next = this.context = this.onRejected = this.onFulfilled = this.child = null;
  this.always = !1;
};
goog.Promise.CallbackEntry_.prototype.reset = function() {
  this.context = this.onRejected = this.onFulfilled = this.child = null;
  this.always = !1;
};
goog.Promise.DEFAULT_MAX_UNUSED = 100;
goog.Promise.freelist_ = new module$contents$goog$async$FreeList_FreeList(function() {
  return new goog.Promise.CallbackEntry_();
}, function(item) {
  item.reset();
}, goog.Promise.DEFAULT_MAX_UNUSED);
goog.Promise.getCallbackEntry_ = function(onFulfilled, onRejected, context) {
  var entry = goog.Promise.freelist_.get();
  entry.onFulfilled = onFulfilled;
  entry.onRejected = onRejected;
  entry.context = context;
  return entry;
};
goog.Promise.returnEntry_ = function(entry) {
  goog.Promise.freelist_.put(entry);
};
goog.Promise.resolve = function(opt_value) {
  if (opt_value instanceof goog.Promise) {
    return opt_value;
  }
  var promise = new goog.Promise(goog.functions.UNDEFINED);
  promise.resolve_(goog.Promise.State_.FULFILLED, opt_value);
  return promise;
};
goog.Promise.reject = function(opt_reason) {
  return new goog.Promise(function(resolve, reject) {
    reject(opt_reason);
  });
};
goog.Promise.resolveThen_ = function(value, onFulfilled, onRejected) {
  goog.Promise.maybeThen_(value, onFulfilled, onRejected, null) || module$contents$goog$async$run_run(goog.partial(onFulfilled, value));
};
goog.Promise.race = function(promises) {
  return new goog.Promise(function(resolve, reject) {
    promises.length || resolve(void 0);
    for (var i = 0, promise; i < promises.length; i++) {
      promise = promises[i], goog.Promise.resolveThen_(promise, resolve, reject);
    }
  });
};
goog.Promise.all = function(promises) {
  return new goog.Promise(function(resolve, reject) {
    var toFulfill = promises.length, values = [];
    if (toFulfill) {
      for (var onFulfill = function(index, value) {
        toFulfill--;
        values[index] = value;
        0 == toFulfill && resolve(values);
      }, onReject = function(reason) {
        reject(reason);
      }, i = 0, promise; i < promises.length; i++) {
        promise = promises[i], goog.Promise.resolveThen_(promise, goog.partial(onFulfill, i), onReject);
      }
    } else {
      resolve(values);
    }
  });
};
goog.Promise.allSettled = function(promises) {
  return new goog.Promise(function(resolve, reject) {
    var toSettle = promises.length, results = [];
    if (toSettle) {
      for (var onSettled = function(index, fulfilled, result) {
        toSettle--;
        results[index] = fulfilled ? {fulfilled:!0, value:result} : {fulfilled:!1, reason:result};
        0 == toSettle && resolve(results);
      }, i = 0, promise; i < promises.length; i++) {
        promise = promises[i], goog.Promise.resolveThen_(promise, goog.partial(onSettled, i, !0), goog.partial(onSettled, i, !1));
      }
    } else {
      resolve(results);
    }
  });
};
goog.Promise.firstFulfilled = function(promises) {
  return new goog.Promise(function(resolve, reject) {
    var toReject = promises.length, reasons = [];
    if (toReject) {
      for (var onFulfill = function(value) {
        resolve(value);
      }, onReject = function(index, reason) {
        toReject--;
        reasons[index] = reason;
        0 == toReject && reject(reasons);
      }, i = 0, promise; i < promises.length; i++) {
        promise = promises[i], goog.Promise.resolveThen_(promise, onFulfill, goog.partial(onReject, i));
      }
    } else {
      resolve(void 0);
    }
  });
};
goog.Promise.withResolver = function() {
  var resolve, reject, promise = new goog.Promise(function(rs, rj) {
    resolve = rs;
    reject = rj;
  });
  return new goog.Promise.Resolver_(promise, resolve, reject);
};
goog.Promise.prototype.then = function(opt_onFulfilled, opt_onRejected, opt_context) {
  null != opt_onFulfilled && goog.asserts.assertFunction(opt_onFulfilled, "opt_onFulfilled should be a function.");
  null != opt_onRejected && goog.asserts.assertFunction(opt_onRejected, "opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");
  goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("then"));
  return this.addChildPromise_("function" === typeof opt_onFulfilled ? opt_onFulfilled : null, "function" === typeof opt_onRejected ? opt_onRejected : null, opt_context);
};
module$contents$goog$Thenable_Thenable.addImplementation(goog.Promise);
goog.Promise.prototype.thenVoid = function(opt_onFulfilled, opt_onRejected, opt_context) {
  null != opt_onFulfilled && goog.asserts.assertFunction(opt_onFulfilled, "opt_onFulfilled should be a function.");
  null != opt_onRejected && goog.asserts.assertFunction(opt_onRejected, "opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");
  goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("then"));
  this.addCallbackEntry_(goog.Promise.getCallbackEntry_(opt_onFulfilled || goog.functions.UNDEFINED, opt_onRejected || null, opt_context));
};
goog.Promise.prototype.thenAlways = function(onSettled, opt_context) {
  goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("thenAlways"));
  var entry = goog.Promise.getCallbackEntry_(onSettled, onSettled, opt_context);
  entry.always = !0;
  this.addCallbackEntry_(entry);
  return this;
};
goog.Promise.prototype.thenCatch = function(onRejected, opt_context) {
  goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("thenCatch"));
  return this.addChildPromise_(null, onRejected, opt_context);
};
goog.Promise.prototype.catch = goog.Promise.prototype.thenCatch;
goog.Promise.prototype.cancel = function(opt_message) {
  if (this.state_ == goog.Promise.State_.PENDING) {
    var err = new goog.Promise.CancellationError(opt_message);
    module$contents$goog$async$run_run(function() {
      this.cancelInternal_(err);
    }, this);
  }
};
goog.Promise.prototype.cancelInternal_ = function(err) {
  this.state_ == goog.Promise.State_.PENDING && (this.parent_ ? (this.parent_.cancelChild_(this, err), this.parent_ = null) : this.resolve_(goog.Promise.State_.REJECTED, err));
};
goog.Promise.prototype.cancelChild_ = function(childPromise, err) {
  if (this.callbackEntries_) {
    for (var childCount = 0, childEntry = null, beforeChildEntry = null, entry = this.callbackEntries_; entry && (entry.always || (childCount++, entry.child == childPromise && (childEntry = entry), !(childEntry && 1 < childCount))); entry = entry.next) {
      childEntry || (beforeChildEntry = entry);
    }
    childEntry && (this.state_ == goog.Promise.State_.PENDING && 1 == childCount ? this.cancelInternal_(err) : (beforeChildEntry ? this.removeEntryAfter_(beforeChildEntry) : this.popEntry_(), this.executeCallback_(childEntry, goog.Promise.State_.REJECTED, err)));
  }
};
goog.Promise.prototype.addCallbackEntry_ = function(callbackEntry) {
  this.hasEntry_() || this.state_ != goog.Promise.State_.FULFILLED && this.state_ != goog.Promise.State_.REJECTED || this.scheduleCallbacks_();
  this.queueEntry_(callbackEntry);
};
goog.Promise.prototype.addChildPromise_ = function(onFulfilled, onRejected, opt_context) {
  onFulfilled && (onFulfilled = module$contents$goog$debug$asyncStackTag_wrap(onFulfilled, "goog.Promise.then"));
  onRejected && (onRejected = module$contents$goog$debug$asyncStackTag_wrap(onRejected, "goog.Promise.then"));
  var callbackEntry = goog.Promise.getCallbackEntry_(null, null, null);
  callbackEntry.child = new goog.Promise(function(resolve, reject) {
    callbackEntry.onFulfilled = onFulfilled ? function(value) {
      try {
        var result = onFulfilled.call(opt_context, value);
        resolve(result);
      } catch (err) {
        reject(err);
      }
    } : resolve;
    callbackEntry.onRejected = onRejected ? function(reason) {
      try {
        var result = onRejected.call(opt_context, reason);
        void 0 === result && reason instanceof goog.Promise.CancellationError ? reject(reason) : resolve(result);
      } catch (err) {
        reject(err);
      }
    } : reject;
  });
  callbackEntry.child.parent_ = this;
  this.addCallbackEntry_(callbackEntry);
  return callbackEntry.child;
};
goog.Promise.prototype.unblockAndFulfill_ = function(value) {
  goog.asserts.assert(this.state_ == goog.Promise.State_.BLOCKED);
  this.state_ = goog.Promise.State_.PENDING;
  this.resolve_(goog.Promise.State_.FULFILLED, value);
};
goog.Promise.prototype.unblockAndReject_ = function(reason) {
  goog.asserts.assert(this.state_ == goog.Promise.State_.BLOCKED);
  this.state_ = goog.Promise.State_.PENDING;
  this.resolve_(goog.Promise.State_.REJECTED, reason);
};
goog.Promise.prototype.resolve_ = function(state, x) {
  this.state_ == goog.Promise.State_.PENDING && (this === x && (state = goog.Promise.State_.REJECTED, x = new TypeError("Promise cannot resolve to itself")), this.state_ = goog.Promise.State_.BLOCKED, goog.Promise.maybeThen_(x, this.unblockAndFulfill_, this.unblockAndReject_, this) || (this.result_ = x, this.state_ = state, this.parent_ = null, this.scheduleCallbacks_(), state != goog.Promise.State_.REJECTED || x instanceof goog.Promise.CancellationError || goog.Promise.addUnhandledRejection_(this, 
  x)));
};
goog.Promise.maybeThen_ = function(value, onFulfilled, onRejected, context) {
  if (value instanceof goog.Promise) {
    return value.thenVoid(onFulfilled, onRejected, context), !0;
  }
  if (module$contents$goog$Thenable_Thenable.isImplementedBy(value)) {
    return value.then(onFulfilled, onRejected, context), !0;
  }
  if (goog.isObject(value)) {
    try {
      var then = value.then;
      if ("function" === typeof then) {
        return goog.Promise.tryThen_(value, then, onFulfilled, onRejected, context), !0;
      }
    } catch (e) {
      return onRejected.call(context, e), !0;
    }
  }
  return !1;
};
goog.Promise.tryThen_ = function(thenable, then, onFulfilled, onRejected, context) {
  var called = !1, resolve = function(value) {
    called || (called = !0, onFulfilled.call(context, value));
  }, reject = function(reason) {
    called || (called = !0, onRejected.call(context, reason));
  };
  try {
    then.call(thenable, resolve, reject);
  } catch (e) {
    reject(e);
  }
};
goog.Promise.prototype.scheduleCallbacks_ = function() {
  this.executing_ || (this.executing_ = !0, module$contents$goog$async$run_run(this.executeCallbacks_, this));
};
goog.Promise.prototype.hasEntry_ = function() {
  return !!this.callbackEntries_;
};
goog.Promise.prototype.queueEntry_ = function(entry) {
  goog.asserts.assert(null != entry.onFulfilled);
  this.callbackEntriesTail_ ? this.callbackEntriesTail_.next = entry : this.callbackEntries_ = entry;
  this.callbackEntriesTail_ = entry;
};
goog.Promise.prototype.popEntry_ = function() {
  var entry = null;
  this.callbackEntries_ && (entry = this.callbackEntries_, this.callbackEntries_ = entry.next, entry.next = null);
  this.callbackEntries_ || (this.callbackEntriesTail_ = null);
  null != entry && goog.asserts.assert(null != entry.onFulfilled);
  return entry;
};
goog.Promise.prototype.removeEntryAfter_ = function(previous) {
  goog.asserts.assert(this.callbackEntries_);
  goog.asserts.assert(null != previous);
  previous.next == this.callbackEntriesTail_ && (this.callbackEntriesTail_ = previous);
  previous.next = previous.next.next;
};
goog.Promise.prototype.executeCallbacks_ = function() {
  for (var entry = null; entry = this.popEntry_();) {
    goog.Promise.LONG_STACK_TRACES && this.currentStep_++, this.executeCallback_(entry, this.state_, this.result_);
  }
  this.executing_ = !1;
};
goog.Promise.prototype.executeCallback_ = function(callbackEntry, state, result) {
  state == goog.Promise.State_.REJECTED && callbackEntry.onRejected && !callbackEntry.always && this.removeUnhandledRejection_();
  if (callbackEntry.child) {
    callbackEntry.child.parent_ = null, goog.Promise.invokeCallback_(callbackEntry, state, result);
  } else {
    try {
      callbackEntry.always ? callbackEntry.onFulfilled.call(callbackEntry.context) : goog.Promise.invokeCallback_(callbackEntry, state, result);
    } catch (err) {
      goog.Promise.handleRejection_.call(null, err);
    }
  }
  goog.Promise.returnEntry_(callbackEntry);
};
goog.Promise.invokeCallback_ = function(callbackEntry, state, result) {
  state == goog.Promise.State_.FULFILLED ? callbackEntry.onFulfilled.call(callbackEntry.context, result) : callbackEntry.onRejected && callbackEntry.onRejected.call(callbackEntry.context, result);
};
goog.Promise.prototype.addStackTrace_ = function(err) {
  if (goog.Promise.LONG_STACK_TRACES && "string" === typeof err.stack) {
    var trace = err.stack.split("\n", 4)[3], message = err.message;
    message += Array(11 - message.length).join(" ");
    this.stack_.push(message + trace);
  }
};
goog.Promise.prototype.appendLongStack_ = function(err) {
  if (goog.Promise.LONG_STACK_TRACES && err && "string" === typeof err.stack && this.stack_.length) {
    for (var longTrace = ["Promise trace:"], promise = this; promise; promise = promise.parent_) {
      for (var i = this.currentStep_; 0 <= i; i--) {
        longTrace.push(promise.stack_[i]);
      }
      longTrace.push("Value: [" + (promise.state_ == goog.Promise.State_.REJECTED ? "REJECTED" : "FULFILLED") + "] <" + String(promise.result_) + ">");
    }
    err.stack += "\n\n" + longTrace.join("\n");
  }
};
goog.Promise.prototype.removeUnhandledRejection_ = function() {
  if (0 < goog.Promise.UNHANDLED_REJECTION_DELAY) {
    for (var p = this; p && p.unhandledRejectionId_; p = p.parent_) {
      goog.global.clearTimeout(p.unhandledRejectionId_), p.unhandledRejectionId_ = 0;
    }
  } else if (0 == goog.Promise.UNHANDLED_REJECTION_DELAY) {
    for (p = this; p && p.hadUnhandledRejection_; p = p.parent_) {
      p.hadUnhandledRejection_ = !1;
    }
  }
};
goog.Promise.addUnhandledRejection_ = function(promise, reason) {
  0 < goog.Promise.UNHANDLED_REJECTION_DELAY ? promise.unhandledRejectionId_ = goog.global.setTimeout(function() {
    promise.appendLongStack_(reason);
    goog.Promise.handleRejection_.call(null, reason);
  }, goog.Promise.UNHANDLED_REJECTION_DELAY) : 0 == goog.Promise.UNHANDLED_REJECTION_DELAY && (promise.hadUnhandledRejection_ = !0, module$contents$goog$async$run_run(function() {
    promise.hadUnhandledRejection_ && (promise.appendLongStack_(reason), goog.Promise.handleRejection_.call(null, reason));
  }));
};
goog.Promise.handleRejection_ = module$contents$goog$async$throwException_throwException;
goog.Promise.setUnhandledRejectionHandler = function(handler) {
  goog.Promise.handleRejection_ = handler;
};
goog.Promise.CancellationError = function(opt_message) {
  module$contents$goog$debug$Error_DebugError.call(this, opt_message);
  this.reportErrorToServer = !1;
};
goog.inherits(goog.Promise.CancellationError, module$contents$goog$debug$Error_DebugError);
goog.Promise.CancellationError.prototype.name = "cancel";
goog.Promise.Resolver_ = function(promise, resolve, reject) {
  this.promise = promise;
  this.resolve = resolve;
  this.reject = reject;
};
goog.Timer = function(opt_interval, opt_timerObject) {
  goog.events.EventTarget.call(this);
  this.interval_ = opt_interval || 1;
  this.timerObject_ = opt_timerObject || goog.Timer.defaultTimerObject;
  this.boundTick_ = goog.bind(this.tick_, this);
  this.last_ = goog.now();
};
goog.inherits(goog.Timer, goog.events.EventTarget);
goog.Timer.MAX_TIMEOUT_ = 2147483647;
goog.Timer.INVALID_TIMEOUT_ID_ = -1;
goog.Timer.prototype.enabled = !1;
goog.Timer.defaultTimerObject = goog.global;
goog.Timer.intervalScale = .8;
goog.Timer.prototype.timer_ = null;
goog.Timer.prototype.getInterval = function() {
  return this.interval_;
};
goog.Timer.prototype.setInterval = function(interval) {
  this.interval_ = interval;
  this.timer_ && this.enabled ? (this.stop(), this.start()) : this.timer_ && this.stop();
};
goog.Timer.prototype.tick_ = function() {
  if (this.enabled) {
    var elapsed = goog.now() - this.last_;
    0 < elapsed && elapsed < this.interval_ * goog.Timer.intervalScale ? this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_ - elapsed) : (this.timer_ && (this.timerObject_.clearTimeout(this.timer_), this.timer_ = null), this.dispatchTick(), this.enabled && (this.stop(), this.start()));
  }
};
goog.Timer.prototype.dispatchTick = function() {
  this.dispatchEvent(goog.Timer.TICK);
};
goog.Timer.prototype.start = function() {
  this.enabled = !0;
  this.timer_ || (this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_), this.last_ = goog.now());
};
goog.Timer.prototype.stop = function() {
  this.enabled = !1;
  this.timer_ && (this.timerObject_.clearTimeout(this.timer_), this.timer_ = null);
};
goog.Timer.prototype.disposeInternal = function() {
  goog.Timer.superClass_.disposeInternal.call(this);
  this.stop();
  delete this.timerObject_;
};
goog.Timer.TICK = "tick";
goog.Timer.callOnce = function(listener, opt_delay, opt_handler) {
  if ("function" === typeof listener) {
    opt_handler && (listener = goog.bind(listener, opt_handler));
  } else if (listener && "function" == typeof listener.handleEvent) {
    listener = goog.bind(listener.handleEvent, listener);
  } else {
    throw Error("Invalid listener argument");
  }
  return Number(opt_delay) > goog.Timer.MAX_TIMEOUT_ ? goog.Timer.INVALID_TIMEOUT_ID_ : goog.Timer.defaultTimerObject.setTimeout(listener, opt_delay || 0);
};
goog.Timer.clear = function(timerId) {
  goog.Timer.defaultTimerObject.clearTimeout(timerId);
};
goog.Timer.promise = function(delay, opt_result) {
  var timerKey = null;
  return (new goog.Promise(function(resolve, reject) {
    timerKey = goog.Timer.callOnce(function() {
      resolve(opt_result);
    }, delay);
    timerKey == goog.Timer.INVALID_TIMEOUT_ID_ && reject(Error("Failed to schedule timer."));
  })).thenCatch(function(error) {
    goog.Timer.clear(timerKey);
    throw error;
  });
};
var module$contents$goog$async$Throttle_Throttle = function(listener, interval, handler) {
  goog.Disposable.call(this);
  this.listener_ = null != handler ? listener.bind(handler) : listener;
  this.interval_ = interval;
  this.args_ = null;
  this.shouldFire_ = !1;
  this.pauseCount_ = 0;
  this.timer_ = null;
};
$jscomp.inherits(module$contents$goog$async$Throttle_Throttle, goog.Disposable);
module$contents$goog$async$Throttle_Throttle.prototype.fire = function(var_args) {
  this.args_ = arguments;
  this.timer_ || this.pauseCount_ ? this.shouldFire_ = !0 : this.doAction_();
};
module$contents$goog$async$Throttle_Throttle.prototype.stop = function() {
  this.timer_ && (goog.Timer.clear(this.timer_), this.timer_ = null, this.shouldFire_ = !1, this.args_ = null);
};
module$contents$goog$async$Throttle_Throttle.prototype.pause = function() {
  this.pauseCount_++;
};
module$contents$goog$async$Throttle_Throttle.prototype.resume = function() {
  this.pauseCount_--;
  this.pauseCount_ || !this.shouldFire_ || this.timer_ || (this.shouldFire_ = !1, this.doAction_());
};
module$contents$goog$async$Throttle_Throttle.prototype.disposeInternal = function() {
  goog.Disposable.prototype.disposeInternal.call(this);
  this.stop();
};
module$contents$goog$async$Throttle_Throttle.prototype.onTimer_ = function() {
  this.timer_ = null;
  this.shouldFire_ && !this.pauseCount_ && (this.shouldFire_ = !1, this.doAction_());
};
module$contents$goog$async$Throttle_Throttle.prototype.doAction_ = function() {
  var $jscomp$this$m92829211$8 = this;
  this.timer_ = goog.Timer.callOnce(function() {
    return $jscomp$this$m92829211$8.onTimer_();
  }, this.interval_);
  var args = this.args_;
  this.args_ = null;
  this.listener_.apply(null, args);
};
goog.async.Throttle = module$contents$goog$async$Throttle_Throttle;
goog.promise.deferredBase = {};
function module$contents$goog$promise$deferredBase_DeferredBaseDoNotUse() {
}
goog.promise.deferredBase.DeferredBaseDoNotUse = module$contents$goog$promise$deferredBase_DeferredBaseDoNotUse;
/*

 Copyright 2005, 2007 Bob Ippolito. All Rights Reserved.
 Copyright The Closure Library Authors.
 SPDX-License-Identifier: MIT
*/
goog.async.Deferred = function(opt_onCancelFunction, opt_defaultScope) {
  this.sequence_ = [];
  this.onCancelFunction_ = opt_onCancelFunction;
  this.defaultScope_ = opt_defaultScope || null;
  this.hadError_ = this.fired_ = !1;
  this.result_ = void 0;
  this.silentlyCanceled_ = this.blocking_ = this.blocked_ = !1;
  this.unhandledErrorId_ = 0;
  this.parent_ = null;
  this.branches_ = 0;
  if (goog.async.Deferred.LONG_STACK_TRACES && (this.constructorStack_ = null, Error.captureStackTrace)) {
    var target = {stack:""};
    Error.captureStackTrace(target, goog.async.Deferred);
    "string" == typeof target.stack && (this.constructorStack_ = target.stack.replace(/^[^\n]*\n/, ""));
  }
};
goog.inherits(goog.async.Deferred, module$contents$goog$promise$deferredBase_DeferredBaseDoNotUse);
goog.async.Deferred.STRICT_ERRORS = !1;
goog.async.Deferred.LONG_STACK_TRACES = !1;
goog.async.Deferred.prototype.cancel = function(opt_deepCancel) {
  if (this.hasFired()) {
    this.result_ instanceof goog.async.Deferred && this.result_.cancel();
  } else {
    if (this.parent_) {
      var parent = this.parent_;
      delete this.parent_;
      opt_deepCancel ? parent.cancel(opt_deepCancel) : parent.branchCancel_();
    }
    this.onCancelFunction_ ? this.onCancelFunction_.call(this.defaultScope_, this) : this.silentlyCanceled_ = !0;
    this.hasFired() || this.errback(new goog.async.Deferred.CanceledError(this));
  }
};
goog.async.Deferred.prototype.branchCancel_ = function() {
  this.branches_--;
  0 >= this.branches_ && this.cancel();
};
goog.async.Deferred.prototype.continue_ = function(isSuccess, res) {
  this.blocked_ = !1;
  this.updateResult_(isSuccess, res);
};
goog.async.Deferred.prototype.updateResult_ = function(isSuccess, res) {
  this.fired_ = !0;
  this.result_ = res;
  this.hadError_ = !isSuccess;
  this.fire_();
};
goog.async.Deferred.prototype.check_ = function() {
  if (this.hasFired()) {
    if (!this.silentlyCanceled_) {
      throw new goog.async.Deferred.AlreadyCalledError(this);
    }
    this.silentlyCanceled_ = !1;
  }
};
goog.async.Deferred.prototype.callback = function(opt_result) {
  this.check_();
  this.assertNotDeferred_(opt_result);
  this.updateResult_(!0, opt_result);
};
goog.async.Deferred.prototype.errback = function(opt_result) {
  this.check_();
  this.assertNotDeferred_(opt_result);
  this.makeStackTraceLong_(opt_result);
  this.updateResult_(!1, opt_result);
};
goog.async.Deferred.unhandledErrorHandler_ = function(e) {
  throw e;
};
goog.async.Deferred.setUnhandledErrorHandler = function(handler) {
  goog.async.Deferred.unhandledErrorHandler_ = handler;
};
goog.async.Deferred.prototype.makeStackTraceLong_ = function(error) {
  goog.async.Deferred.LONG_STACK_TRACES && this.constructorStack_ && goog.isObject(error) && error.stack && /^[^\n]+(\n   [^\n]+)+/.test(error.stack) && (error.stack = error.stack + "\nDEFERRED OPERATION:\n" + this.constructorStack_);
};
goog.async.Deferred.prototype.assertNotDeferred_ = function(obj) {
  goog.asserts.assert(!(obj instanceof goog.async.Deferred), "An execution sequence may not be initiated with a blocking Deferred.");
};
goog.async.Deferred.prototype.addCallback = function(cb, opt_scope) {
  return this.addCallbacks(cb, null, opt_scope);
};
goog.async.Deferred.prototype.addErrback = function(eb, opt_scope) {
  return this.addCallbacks(null, eb, opt_scope);
};
goog.async.Deferred.prototype.addBoth = function(f, opt_scope) {
  return this.addCallbacks(f, f, opt_scope);
};
goog.async.Deferred.prototype.addFinally = function(f, opt_scope) {
  return this.addCallbacks(f, function(err) {
    var result = f.call(this, err);
    if (void 0 === result) {
      throw err;
    }
    return result;
  }, opt_scope);
};
goog.async.Deferred.prototype.addCallbacks = function(cb, eb, opt_scope) {
  goog.asserts.assert(!this.blocking_, "Blocking Deferreds can not be re-used");
  this.sequence_.push([cb, eb, opt_scope]);
  this.hasFired() && this.fire_();
  return this;
};
goog.async.Deferred.prototype.then = function(opt_onFulfilled, opt_onRejected, opt_context) {
  var reject, resolve, promise = new goog.Promise(function(res, rej) {
    resolve = res;
    reject = rej;
  });
  this.addCallbacks(resolve, function(reason) {
    reason instanceof goog.async.Deferred.CanceledError ? promise.cancel() : reject(reason);
    return goog.async.Deferred.CONVERTED_TO_PROMISE_;
  }, this);
  return promise.then(opt_onFulfilled, opt_onRejected, opt_context);
};
module$contents$goog$Thenable_Thenable.addImplementation(goog.async.Deferred);
goog.async.Deferred.prototype.chainDeferred = function(otherDeferred) {
  this.addCallbacks(otherDeferred.callback, otherDeferred.errback, otherDeferred);
  return this;
};
goog.async.Deferred.prototype.awaitDeferred = function(otherDeferred) {
  return otherDeferred instanceof goog.async.Deferred ? this.addCallback(goog.bind(otherDeferred.branch, otherDeferred)) : this.addCallback(function() {
    return otherDeferred;
  });
};
goog.async.Deferred.prototype.branch = function(opt_propagateCancel) {
  var d = new goog.async.Deferred();
  this.chainDeferred(d);
  opt_propagateCancel && (d.parent_ = this, this.branches_++);
  return d;
};
goog.async.Deferred.prototype.hasFired = function() {
  return this.fired_;
};
goog.async.Deferred.prototype.isError = function(res) {
  return res instanceof Error;
};
goog.async.Deferred.prototype.hasErrback_ = function() {
  return module$contents$goog$array_some(this.sequence_, function(sequenceRow) {
    return "function" === typeof sequenceRow[1];
  });
};
goog.async.Deferred.prototype.getLastValueForMigration = function() {
  return this.hasFired() && !this.hadError_ ? this.result_ : void 0;
};
goog.async.Deferred.CONVERTED_TO_PROMISE_ = {};
goog.async.Deferred.prototype.fire_ = function() {
  this.unhandledErrorId_ && this.hasFired() && this.hasErrback_() && (goog.async.Deferred.unscheduleError_(this.unhandledErrorId_), this.unhandledErrorId_ = 0);
  this.parent_ && (this.parent_.branches_--, delete this.parent_);
  for (var res = this.result_, unhandledException = !1, isNewlyBlocked = !1, wasConvertedToPromise = !1; this.sequence_.length && !this.blocked_;) {
    wasConvertedToPromise = !1;
    var sequenceEntry = this.sequence_.shift(), callback = sequenceEntry[0], errback = sequenceEntry[1], scope = sequenceEntry[2], f = this.hadError_ ? errback : callback;
    if (f) {
      try {
        var ret = f.call(scope || this.defaultScope_, res);
        ret === goog.async.Deferred.CONVERTED_TO_PROMISE_ && (wasConvertedToPromise = !0, ret = void 0);
        void 0 !== ret && (this.hadError_ = this.hadError_ && (ret == res || this.isError(ret)), this.result_ = res = ret);
        if (module$contents$goog$Thenable_Thenable.isImplementedBy(res) || "function" === typeof goog.global.Promise && res instanceof goog.global.Promise) {
          this.blocked_ = isNewlyBlocked = !0;
        }
      } catch (ex) {
        res = ex, this.hadError_ = !0, this.makeStackTraceLong_(res), this.hasErrback_() || (unhandledException = !0);
      }
    }
  }
  this.result_ = res;
  if (isNewlyBlocked) {
    var onCallback = goog.bind(this.continue_, this, !0), onErrback = goog.bind(this.continue_, this, !1);
    res instanceof goog.async.Deferred ? (res.addCallbacks(onCallback, onErrback), res.blocking_ = !0) : res.then(onCallback, onErrback);
  } else {
    !goog.async.Deferred.STRICT_ERRORS || wasConvertedToPromise || !this.isError(res) || res instanceof goog.async.Deferred.CanceledError || (unhandledException = this.hadError_ = !0);
  }
  unhandledException && (this.unhandledErrorId_ = goog.async.Deferred.scheduleError_(res));
};
goog.async.Deferred.succeed = function(opt_result) {
  var d = new goog.async.Deferred();
  d.callback(opt_result);
  return d;
};
goog.async.Deferred.fromPromise = function(promise) {
  var d = new goog.async.Deferred();
  promise.then(function(value) {
    d.callback(value);
  }, function(error) {
    d.errback(error);
  });
  return d;
};
goog.async.Deferred.fail = function(res) {
  var d = new goog.async.Deferred();
  d.errback(res);
  return d;
};
goog.async.Deferred.canceled = function() {
  var d = new goog.async.Deferred();
  d.cancel();
  return d;
};
goog.async.Deferred.when = function(value, callback, opt_scope) {
  return value instanceof goog.async.Deferred ? value.branch(!0).addCallback(callback, opt_scope) : goog.async.Deferred.succeed(value).addCallback(callback, opt_scope);
};
goog.async.Deferred.AlreadyCalledError = function(deferred) {
  module$contents$goog$debug$Error_DebugError.call(this);
  this.deferred = deferred;
};
goog.inherits(goog.async.Deferred.AlreadyCalledError, module$contents$goog$debug$Error_DebugError);
goog.async.Deferred.AlreadyCalledError.prototype.message = "Deferred has already fired";
goog.async.Deferred.AlreadyCalledError.prototype.name = "AlreadyCalledError";
goog.async.Deferred.CanceledError = function(deferred) {
  module$contents$goog$debug$Error_DebugError.call(this);
  this.deferred = deferred;
};
goog.inherits(goog.async.Deferred.CanceledError, module$contents$goog$debug$Error_DebugError);
goog.async.Deferred.CanceledError.prototype.message = "Deferred was canceled";
goog.async.Deferred.CanceledError.prototype.name = "CanceledError";
goog.async.Deferred.Error_ = function(error) {
  this.id_ = goog.global.setTimeout(goog.bind(this.throwError, this), 0);
  this.error_ = error;
};
goog.async.Deferred.Error_.prototype.throwError = function() {
  goog.asserts.assert(goog.async.Deferred.errorMap_[this.id_], "Cannot throw an error that is not scheduled.");
  delete goog.async.Deferred.errorMap_[this.id_];
  goog.async.Deferred.unhandledErrorHandler_(this.error_);
};
goog.async.Deferred.Error_.prototype.resetTimer = function() {
  goog.global.clearTimeout(this.id_);
};
goog.async.Deferred.errorMap_ = {};
goog.async.Deferred.scheduleError_ = function(error) {
  var deferredError = new goog.async.Deferred.Error_(error);
  goog.async.Deferred.errorMap_[deferredError.id_] = deferredError;
  return deferredError.id_;
};
goog.async.Deferred.unscheduleError_ = function(id) {
  var error = goog.async.Deferred.errorMap_[id];
  error && (error.resetTimer(), delete goog.async.Deferred.errorMap_[id]);
};
goog.async.Deferred.assertNoErrors = function() {
  var map = goog.async.Deferred.errorMap_, key;
  for (key in map) {
    var error = map[key];
    error.resetTimer();
    error.throwError();
  }
};
goog.net = {};
goog.net.jsloader = {};
goog.net.jsloader.Options = {};
goog.net.jsloader.GLOBAL_VERIFY_OBJS_ = "closure_verification";
goog.net.jsloader.DEFAULT_TIMEOUT = 5E3;
goog.net.jsloader.scriptsToLoad_ = [];
goog.net.jsloader.safeLoadMany = function(trustedUris, opt_options) {
  if (!trustedUris.length) {
    return goog.async.Deferred.succeed(null);
  }
  var isAnotherModuleLoading = goog.net.jsloader.scriptsToLoad_.length;
  module$contents$goog$array_extend(goog.net.jsloader.scriptsToLoad_, trustedUris);
  if (isAnotherModuleLoading) {
    return goog.net.jsloader.scriptLoadingDeferred_;
  }
  trustedUris = goog.net.jsloader.scriptsToLoad_;
  var popAndLoadNextScript = function() {
    var trustedUri = trustedUris.shift(), deferred = goog.net.jsloader.safeLoad(trustedUri, opt_options);
    trustedUris.length && deferred.addBoth(popAndLoadNextScript);
    return deferred;
  };
  goog.net.jsloader.scriptLoadingDeferred_ = popAndLoadNextScript();
  return goog.net.jsloader.scriptLoadingDeferred_;
};
goog.net.jsloader.safeLoad = function(trustedUri, opt_options) {
  var options = opt_options || {}, doc = options.document || document, uri = goog.html.TrustedResourceUrl.unwrap(trustedUri), script = (new goog.dom.DomHelper(doc)).createElement(goog.dom.TagName.SCRIPT), request = {script_:script, timeout_:void 0}, deferred = new goog.async.Deferred(goog.net.jsloader.cancel_, request), timeout = null, timeoutDuration = null != options.timeout ? options.timeout : goog.net.jsloader.DEFAULT_TIMEOUT;
  0 < timeoutDuration && (timeout = window.setTimeout(function() {
    goog.net.jsloader.cleanup_(script, !0);
    deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.TIMEOUT, "Timeout reached for loading script " + uri));
  }, timeoutDuration), request.timeout_ = timeout);
  script.onload = script.onreadystatechange = function() {
    script.readyState && "loaded" != script.readyState && "complete" != script.readyState || (goog.net.jsloader.cleanup_(script, options.cleanupWhenDone || !1, timeout), deferred.callback(null));
  };
  script.onerror = function() {
    goog.net.jsloader.cleanup_(script, !0, timeout);
    deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.LOAD_ERROR, "Error while loading script " + uri));
  };
  var properties = options.attributes || {};
  module$contents$goog$object_extend(properties, {type:"text/javascript", charset:"UTF-8"});
  goog.dom.setProperties(script, properties);
  goog.dom.safe.setScriptSrc(script, trustedUri);
  goog.net.jsloader.getScriptParentElement_(doc).appendChild(script);
  return deferred;
};
goog.net.jsloader.safeLoadAndVerify = function(trustedUri, verificationObjName, options) {
  goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_] || (goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_] = {});
  var verifyObjs = goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_], uri = goog.html.TrustedResourceUrl.unwrap(trustedUri);
  if (void 0 !== verifyObjs[verificationObjName]) {
    return goog.async.Deferred.fail(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.VERIFY_OBJECT_ALREADY_EXISTS, "Verification object " + verificationObjName + " already defined."));
  }
  var sendDeferred = goog.net.jsloader.safeLoad(trustedUri, options), deferred = new goog.async.Deferred(goog.bind(sendDeferred.cancel, sendDeferred));
  sendDeferred.addCallback(function() {
    var result = verifyObjs[verificationObjName];
    void 0 !== result ? (deferred.callback(result), delete verifyObjs[verificationObjName]) : deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.VERIFY_ERROR, "Script " + uri + " loaded, but verification object " + verificationObjName + " was not defined."));
  });
  sendDeferred.addErrback(function(error) {
    void 0 !== verifyObjs[verificationObjName] && delete verifyObjs[verificationObjName];
    deferred.errback(error);
  });
  return deferred;
};
goog.net.jsloader.getScriptParentElement_ = function(doc) {
  var headElements = goog.dom.getElementsByTagName(goog.dom.TagName.HEAD, doc);
  return headElements && 0 !== headElements.length ? headElements[0] : doc.documentElement;
};
goog.net.jsloader.cancel_ = function() {
  if (this && this.script_) {
    var scriptNode = this.script_;
    scriptNode && scriptNode.tagName == goog.dom.TagName.SCRIPT && goog.net.jsloader.cleanup_(scriptNode, !0, this.timeout_);
  }
};
goog.net.jsloader.cleanup_ = function(scriptNode, removeScriptNode, opt_timeout) {
  null != opt_timeout && goog.global.clearTimeout(opt_timeout);
  scriptNode.onload = function() {
  };
  scriptNode.onerror = function() {
  };
  scriptNode.onreadystatechange = function() {
  };
  removeScriptNode && window.setTimeout(function() {
    goog.dom.removeNode(scriptNode);
  }, 0);
};
goog.net.jsloader.ErrorCode = {LOAD_ERROR:0, TIMEOUT:1, VERIFY_ERROR:2, VERIFY_OBJECT_ALREADY_EXISTS:3};
goog.net.jsloader.Error = function(code, opt_message) {
  var msg = "Jsloader error (code #" + code + ")";
  opt_message && (msg += ": " + opt_message);
  module$contents$goog$debug$Error_DebugError.call(this, msg);
  this.code = code;
};
goog.inherits(goog.net.jsloader.Error, module$contents$goog$debug$Error_DebugError);
goog.json = {};
goog.json.Replacer = {};
goog.json.Reviver = {};
goog.json.USE_NATIVE_JSON = !1;
goog.json.isValid = function(s) {
  return /^\s*$/.test(s) ? !1 : /^[\],:{}\s\u2028\u2029]*$/.test(s.replace(/\\["\\\/bfnrtu]/g, "@").replace(/(?:"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)[\s\u2028\u2029]*(?=:|,|]|}|$)/g, "]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, ""));
};
goog.json.errorLogger_ = function() {
};
goog.json.setErrorLogger = function(errorLogger) {
  goog.json.errorLogger_ = errorLogger;
};
goog.json.parse = goog.json.USE_NATIVE_JSON ? goog.global.JSON.parse : function(s) {
  try {
    return goog.global.JSON.parse(s);
  } catch (ex) {
    var error = ex;
  }
  var o = String(s);
  if (goog.json.isValid(o)) {
    try {
      var result = eval("(" + o + ")");
      error && goog.json.errorLogger_("Invalid JSON: " + o, error);
      return result;
    } catch (ex) {
    }
  }
  throw Error("Invalid JSON string: " + o);
};
goog.json.serialize = goog.json.USE_NATIVE_JSON ? goog.global.JSON.stringify : function(object, opt_replacer) {
  return (new goog.json.Serializer(opt_replacer)).serialize(object);
};
goog.json.Serializer = function(opt_replacer) {
  this.replacer_ = opt_replacer;
};
goog.json.Serializer.prototype.serialize = function(object) {
  var sb = [];
  this.serializeInternal(object, sb);
  return sb.join("");
};
goog.json.Serializer.prototype.serializeInternal = function(object, sb) {
  if (null == object) {
    sb.push("null");
  } else {
    if ("object" == typeof object) {
      if (Array.isArray(object)) {
        this.serializeArray(object, sb);
        return;
      }
      if (object instanceof String || object instanceof Number || object instanceof Boolean) {
        object = object.valueOf();
      } else {
        this.serializeObject_(object, sb);
        return;
      }
    }
    switch(typeof object) {
      case "string":
        this.serializeString_(object, sb);
        break;
      case "number":
        this.serializeNumber_(object, sb);
        break;
      case "boolean":
        sb.push(String(object));
        break;
      case "function":
        sb.push("null");
        break;
      default:
        throw Error("Unknown type: " + typeof object);
    }
  }
};
goog.json.Serializer.charToJsonCharCache_ = {'"':'\\"', "\\":"\\\\", "/":"\\/", "\b":"\\b", "\f":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\v":"\\u000b"};
goog.json.Serializer.charsToReplace_ = /\uffff/.test("\uffff") ? /[\\"\x00-\x1f\x7f-\uffff]/g : /[\\"\x00-\x1f\x7f-\xff]/g;
goog.json.Serializer.prototype.serializeString_ = function(s, sb) {
  sb.push('"', s.replace(goog.json.Serializer.charsToReplace_, function(c) {
    var rv = goog.json.Serializer.charToJsonCharCache_[c];
    rv || (rv = "\\u" + (c.charCodeAt(0) | 65536).toString(16).slice(1), goog.json.Serializer.charToJsonCharCache_[c] = rv);
    return rv;
  }), '"');
};
goog.json.Serializer.prototype.serializeNumber_ = function(n, sb) {
  sb.push(isFinite(n) && !isNaN(n) ? String(n) : "null");
};
goog.json.Serializer.prototype.serializeArray = function(arr, sb) {
  var l = arr.length;
  sb.push("[");
  for (var sep = "", i = 0; i < l; i++) {
    sb.push(sep);
    var value = arr[i];
    this.serializeInternal(this.replacer_ ? this.replacer_.call(arr, String(i), value) : value, sb);
    sep = ",";
  }
  sb.push("]");
};
goog.json.Serializer.prototype.serializeObject_ = function(obj, sb) {
  sb.push("{");
  var sep = "", key;
  for (key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      var value = obj[key];
      "function" != typeof value && (sb.push(sep), this.serializeString_(key, sb), sb.push(":"), this.serializeInternal(this.replacer_ ? this.replacer_.call(obj, key, value) : value, sb), sep = ",");
    }
  }
  sb.push("}");
};
goog.json.hybrid = {};
goog.json.hybrid.stringify = goog.json.USE_NATIVE_JSON ? goog.global.JSON.stringify : function(obj) {
  if (goog.global.JSON) {
    try {
      return goog.global.JSON.stringify(obj);
    } catch (e) {
    }
  }
  return goog.json.serialize(obj);
};
goog.json.hybrid.parse_ = function(jsonString, fallbackParser) {
  if (goog.global.JSON) {
    try {
      var obj = goog.global.JSON.parse(jsonString);
      goog.asserts.assert("object" == typeof obj);
      return obj;
    } catch (e) {
    }
  }
  return fallbackParser(jsonString);
};
goog.json.hybrid.parse = goog.json.USE_NATIVE_JSON ? goog.global.JSON.parse : function(jsonString) {
  return goog.json.hybrid.parse_(jsonString, goog.json.parse);
};
goog.net.ErrorCode = {NO_ERROR:0, ACCESS_DENIED:1, FILE_NOT_FOUND:2, FF_SILENT_ERROR:3, CUSTOM_ERROR:4, EXCEPTION:5, HTTP_ERROR:6, ABORT:7, TIMEOUT:8, OFFLINE:9};
goog.net.ErrorCode.getDebugMessage = function(errorCode) {
  switch(errorCode) {
    case goog.net.ErrorCode.NO_ERROR:
      return "No Error";
    case goog.net.ErrorCode.ACCESS_DENIED:
      return "Access denied to content document";
    case goog.net.ErrorCode.FILE_NOT_FOUND:
      return "File not found";
    case goog.net.ErrorCode.FF_SILENT_ERROR:
      return "Firefox silently errored";
    case goog.net.ErrorCode.CUSTOM_ERROR:
      return "Application custom error";
    case goog.net.ErrorCode.EXCEPTION:
      return "An exception occurred";
    case goog.net.ErrorCode.HTTP_ERROR:
      return "Http response at 400 or 500 level";
    case goog.net.ErrorCode.ABORT:
      return "Request was aborted";
    case goog.net.ErrorCode.TIMEOUT:
      return "Request timed out";
    case goog.net.ErrorCode.OFFLINE:
      return "The resource is not available offline";
    default:
      return "Unrecognized error code";
  }
};
goog.net.EventType = {COMPLETE:"complete", SUCCESS:"success", ERROR:"error", ABORT:"abort", READY:"ready", READY_STATE_CHANGE:"readystatechange", TIMEOUT:"timeout", INCREMENTAL_DATA:"incrementaldata", PROGRESS:"progress", DOWNLOAD_PROGRESS:"downloadprogress", UPLOAD_PROGRESS:"uploadprogress"};
goog.net.HttpStatus = {CONTINUE:100, SWITCHING_PROTOCOLS:101, OK:200, CREATED:201, ACCEPTED:202, NON_AUTHORITATIVE_INFORMATION:203, NO_CONTENT:204, RESET_CONTENT:205, PARTIAL_CONTENT:206, MULTI_STATUS:207, MULTIPLE_CHOICES:300, MOVED_PERMANENTLY:301, FOUND:302, SEE_OTHER:303, NOT_MODIFIED:304, USE_PROXY:305, TEMPORARY_REDIRECT:307, PERMANENT_REDIRECT:308, BAD_REQUEST:400, UNAUTHORIZED:401, PAYMENT_REQUIRED:402, FORBIDDEN:403, NOT_FOUND:404, METHOD_NOT_ALLOWED:405, NOT_ACCEPTABLE:406, PROXY_AUTHENTICATION_REQUIRED:407, 
REQUEST_TIMEOUT:408, CONFLICT:409, GONE:410, LENGTH_REQUIRED:411, PRECONDITION_FAILED:412, REQUEST_ENTITY_TOO_LARGE:413, REQUEST_URI_TOO_LONG:414, UNSUPPORTED_MEDIA_TYPE:415, REQUEST_RANGE_NOT_SATISFIABLE:416, EXPECTATION_FAILED:417, UNPROCESSABLE_ENTITY:422, LOCKED:423, FAILED_DEPENDENCY:424, PRECONDITION_REQUIRED:428, TOO_MANY_REQUESTS:429, REQUEST_HEADER_FIELDS_TOO_LARGE:431, CLIENT_CLOSED_REQUEST:499, INTERNAL_SERVER_ERROR:500, NOT_IMPLEMENTED:501, BAD_GATEWAY:502, SERVICE_UNAVAILABLE:503, GATEWAY_TIMEOUT:504, 
HTTP_VERSION_NOT_SUPPORTED:505, INSUFFICIENT_STORAGE:507, NETWORK_AUTHENTICATION_REQUIRED:511, QUIRK_IE_NO_CONTENT:1223};
goog.net.HttpStatus.isSuccess = function(status) {
  switch(status) {
    case goog.net.HttpStatus.OK:
    case goog.net.HttpStatus.CREATED:
    case goog.net.HttpStatus.ACCEPTED:
    case goog.net.HttpStatus.NO_CONTENT:
    case goog.net.HttpStatus.PARTIAL_CONTENT:
    case goog.net.HttpStatus.NOT_MODIFIED:
    case goog.net.HttpStatus.QUIRK_IE_NO_CONTENT:
      return !0;
    default:
      return !1;
  }
};
goog.net.XhrLike = function() {
};
goog.net.XhrLike.prototype.open = function(method, url, opt_async, opt_user, opt_password) {
};
goog.net.XhrLike.prototype.send = function(opt_data) {
};
goog.net.XhrLike.prototype.abort = function() {
};
goog.net.XhrLike.prototype.setRequestHeader = function(header, value) {
};
goog.net.XhrLike.prototype.getResponseHeader = function(header) {
};
goog.net.XhrLike.prototype.getAllResponseHeaders = function() {
};
goog.net.XhrLike.prototype.setTrustToken = function(trustTokenAttribute) {
};
goog.net.XmlHttpFactory = function() {
};
goog.net.XmlHttpFactory.prototype.cachedOptions_ = null;
goog.net.XmlHttpFactory.prototype.getOptions = function() {
  return this.cachedOptions_ || (this.cachedOptions_ = this.internalGetOptions());
};
goog.net.WrapperXmlHttpFactory = function(xhrFactory, optionsFactory) {
  this.xhrFactory_ = xhrFactory;
  this.optionsFactory_ = optionsFactory;
};
goog.inherits(goog.net.WrapperXmlHttpFactory, goog.net.XmlHttpFactory);
goog.net.WrapperXmlHttpFactory.prototype.createInstance = function() {
  return this.xhrFactory_();
};
goog.net.WrapperXmlHttpFactory.prototype.getOptions = function() {
  return this.optionsFactory_();
};
goog.net.XmlHttp = function() {
  return goog.net.XmlHttp.factory_.createInstance();
};
goog.net.XmlHttp.ASSUME_NATIVE_XHR = !0;
goog.net.XmlHttpDefines = {};
goog.net.XmlHttpDefines.ASSUME_NATIVE_XHR = !0;
goog.net.XmlHttp.getOptions = function() {
  return goog.net.XmlHttp.factory_.getOptions();
};
goog.net.XmlHttp.OptionType = {USE_NULL_FUNCTION:0, LOCAL_REQUEST_ERROR:1};
goog.net.XmlHttp.ReadyState = {UNINITIALIZED:0, LOADING:1, LOADED:2, INTERACTIVE:3, COMPLETE:4};
goog.net.XmlHttp.setFactory = function(factory, optionsFactory) {
  goog.net.XmlHttp.setGlobalFactory(new goog.net.WrapperXmlHttpFactory(goog.asserts.assert(factory), goog.asserts.assert(optionsFactory)));
};
goog.net.XmlHttp.setGlobalFactory = function(factory) {
  goog.net.XmlHttp.factory_ = factory;
};
goog.net.DefaultXmlHttpFactory = function() {
};
goog.inherits(goog.net.DefaultXmlHttpFactory, goog.net.XmlHttpFactory);
goog.net.DefaultXmlHttpFactory.prototype.createInstance = function() {
  var progId = this.getProgId_();
  return progId ? new ActiveXObject(progId) : new XMLHttpRequest();
};
goog.net.DefaultXmlHttpFactory.prototype.internalGetOptions = function() {
  var options = {};
  this.getProgId_() && (options[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION] = !0, options[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR] = !0);
  return options;
};
goog.net.DefaultXmlHttpFactory.prototype.getProgId_ = function() {
  if (goog.net.XmlHttp.ASSUME_NATIVE_XHR || goog.net.XmlHttpDefines.ASSUME_NATIVE_XHR) {
    return "";
  }
  if (!this.ieProgId_ && "undefined" == typeof XMLHttpRequest && "undefined" != typeof ActiveXObject) {
    for (var ACTIVE_X_IDENTS = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"], i = 0; i < ACTIVE_X_IDENTS.length; i++) {
      var candidate = ACTIVE_X_IDENTS[i];
      try {
        return new ActiveXObject(candidate), this.ieProgId_ = candidate;
      } catch (e) {
      }
    }
    throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed");
  }
  return this.ieProgId_;
};
goog.net.XmlHttp.setGlobalFactory(new goog.net.DefaultXmlHttpFactory());
goog.net.XhrIo = function(opt_xmlHttpFactory) {
  goog.events.EventTarget.call(this);
  this.headers = new Map();
  this.xmlHttpFactory_ = opt_xmlHttpFactory || null;
  this.active_ = !1;
  this.xhrOptions_ = this.xhr_ = null;
  this.lastMethod_ = this.lastUri_ = "";
  this.lastErrorCode_ = goog.net.ErrorCode.NO_ERROR;
  this.lastError_ = "";
  this.inAbort_ = this.inOpen_ = this.inSend_ = this.errorDispatched_ = !1;
  this.timeoutInterval_ = 0;
  this.timeoutId_ = null;
  this.responseType_ = goog.net.XhrIo.ResponseType.DEFAULT;
  this.progressEventsEnabled_ = this.withCredentials_ = !1;
  this.attributionReportingOptions_ = this.trustToken_ = null;
};
goog.inherits(goog.net.XhrIo, goog.events.EventTarget);
goog.net.XhrIo.ResponseType = {DEFAULT:"", TEXT:"text", DOCUMENT:"document", BLOB:"blob", ARRAY_BUFFER:"arraybuffer"};
goog.net.XhrIo.prototype.logger_ = goog.log.getLogger("goog.net.XhrIo");
goog.net.XhrIo.CONTENT_TYPE_HEADER = "Content-Type";
goog.net.XhrIo.CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
goog.net.XhrIo.HTTP_SCHEME_PATTERN = /^https?$/i;
goog.net.XhrIo.METHODS_WITH_FORM_DATA = ["POST", "PUT"];
goog.net.XhrIo.FORM_CONTENT_TYPE = "application/x-www-form-urlencoded;charset=utf-8";
goog.net.XhrIo.sendInstances_ = [];
goog.net.XhrIo.send = function(url, opt_callback, opt_method, opt_content, opt_headers, opt_timeoutInterval, opt_withCredentials) {
  var x = new goog.net.XhrIo();
  goog.net.XhrIo.sendInstances_.push(x);
  opt_callback && x.listen(goog.net.EventType.COMPLETE, opt_callback);
  x.listenOnce(goog.net.EventType.READY, x.cleanupSend_);
  opt_timeoutInterval && x.setTimeoutInterval(opt_timeoutInterval);
  opt_withCredentials && x.setWithCredentials(opt_withCredentials);
  x.send(url, opt_method, opt_content, opt_headers);
  return x;
};
goog.net.XhrIo.cleanup = function() {
  for (var instances = goog.net.XhrIo.sendInstances_; instances.length;) {
    instances.pop().dispose();
  }
};
goog.net.XhrIo.protectEntryPoints = function(errorHandler) {
  goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = errorHandler.protectEntryPoint(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_);
};
goog.net.XhrIo.prototype.cleanupSend_ = function() {
  this.dispose();
  module$contents$goog$array_remove(goog.net.XhrIo.sendInstances_, this);
};
goog.net.XhrIo.prototype.getTimeoutInterval = function() {
  return this.timeoutInterval_;
};
goog.net.XhrIo.prototype.setTimeoutInterval = function(ms) {
  this.timeoutInterval_ = Math.max(0, ms);
};
goog.net.XhrIo.prototype.setResponseType = function(type) {
  this.responseType_ = type;
};
goog.net.XhrIo.prototype.getResponseType = function() {
  return this.responseType_;
};
goog.net.XhrIo.prototype.setWithCredentials = function(withCredentials) {
  this.withCredentials_ = withCredentials;
};
goog.net.XhrIo.prototype.getWithCredentials = function() {
  return this.withCredentials_;
};
goog.net.XhrIo.prototype.setProgressEventsEnabled = function(enabled) {
  this.progressEventsEnabled_ = enabled;
};
goog.net.XhrIo.prototype.getProgressEventsEnabled = function() {
  return this.progressEventsEnabled_;
};
goog.net.XhrIo.prototype.setTrustToken = function(trustToken) {
  this.trustToken_ = trustToken;
};
goog.net.XhrIo.prototype.setAttributionReporting = function(attributionReportingOptions) {
  this.attributionReportingOptions_ = attributionReportingOptions;
};
goog.net.XhrIo.prototype.send = function(url, opt_method, opt_content, opt_headers) {
  if (this.xhr_) {
    throw Error("[goog.net.XhrIo] Object is active with another request=" + this.lastUri_ + "; newUri=" + url);
  }
  var method = opt_method ? opt_method.toUpperCase() : "GET";
  this.lastUri_ = url;
  this.lastError_ = "";
  this.lastErrorCode_ = goog.net.ErrorCode.NO_ERROR;
  this.lastMethod_ = method;
  this.errorDispatched_ = !1;
  this.active_ = !0;
  this.xhr_ = this.createXhr();
  this.xhrOptions_ = this.xmlHttpFactory_ ? this.xmlHttpFactory_.getOptions() : goog.net.XmlHttp.getOptions();
  this.xhr_.onreadystatechange = goog.bind(this.onReadyStateChange_, this);
  this.getProgressEventsEnabled() && "onprogress" in this.xhr_ && (this.xhr_.onprogress = goog.bind(function(e) {
    this.onProgressHandler_(e, !0);
  }, this), this.xhr_.upload && (this.xhr_.upload.onprogress = goog.bind(this.onProgressHandler_, this)));
  try {
    goog.log.fine(this.logger_, this.formatMsg_("Opening Xhr")), this.inOpen_ = !0, this.xhr_.open(method, String(url), !0), this.inOpen_ = !1;
  } catch (err) {
    goog.log.fine(this.logger_, this.formatMsg_("Error opening Xhr: " + err.message));
    this.error_(goog.net.ErrorCode.EXCEPTION, err);
    return;
  }
  var content = opt_content || "", headers = new Map(this.headers);
  if (opt_headers) {
    if (Object.getPrototypeOf(opt_headers) === Object.prototype) {
      for (var key in opt_headers) {
        headers.set(key, opt_headers[key]);
      }
    } else if ("function" === typeof opt_headers.keys && "function" === typeof opt_headers.get) {
      for (var $jscomp$iter$39 = $jscomp.makeIterator(opt_headers.keys()), $jscomp$key$m71669834$54$key = $jscomp$iter$39.next(); !$jscomp$key$m71669834$54$key.done; $jscomp$key$m71669834$54$key = $jscomp$iter$39.next()) {
        var key$jscomp$0 = $jscomp$key$m71669834$54$key.value;
        headers.set(key$jscomp$0, opt_headers.get(key$jscomp$0));
      }
    } else {
      throw Error("Unknown input type for opt_headers: " + String(opt_headers));
    }
  }
  var contentTypeKey = Array.from(headers.keys()).find(function(header) {
    return goog.string.caseInsensitiveEquals(goog.net.XhrIo.CONTENT_TYPE_HEADER, header);
  }), contentIsFormData = goog.global.FormData && content instanceof goog.global.FormData;
  !module$contents$goog$array_contains(goog.net.XhrIo.METHODS_WITH_FORM_DATA, method) || contentTypeKey || contentIsFormData || headers.set(goog.net.XhrIo.CONTENT_TYPE_HEADER, goog.net.XhrIo.FORM_CONTENT_TYPE);
  for (var $jscomp$iter$40 = $jscomp.makeIterator(headers), $jscomp$key$m71669834$55$ = $jscomp$iter$40.next(); !$jscomp$key$m71669834$55$.done; $jscomp$key$m71669834$55$ = $jscomp$iter$40.next()) {
    var $jscomp$destructuring$var39 = $jscomp.makeIterator($jscomp$key$m71669834$55$.value), key$jscomp$1 = $jscomp$destructuring$var39.next().value, value = $jscomp$destructuring$var39.next().value;
    this.xhr_.setRequestHeader(key$jscomp$1, value);
  }
  this.responseType_ && (this.xhr_.responseType = this.responseType_);
  "withCredentials" in this.xhr_ && this.xhr_.withCredentials !== this.withCredentials_ && (this.xhr_.withCredentials = this.withCredentials_);
  if ("setTrustToken" in this.xhr_ && this.trustToken_) {
    try {
      this.xhr_.setTrustToken(this.trustToken_);
    } catch (err) {
      goog.log.fine(this.logger_, this.formatMsg_("Error SetTrustToken: " + err.message));
    }
  }
  if ("setAttributionReporting" in this.xhr_ && this.attributionReportingOptions_) {
    try {
      this.xhr_.setAttributionReporting(this.attributionReportingOptions_);
    } catch (err) {
      goog.log.fine(this.logger_, this.formatMsg_("Error SetAttributionReporting: " + err.message));
    }
  }
  try {
    this.cleanUpTimeoutTimer_(), 0 < this.timeoutInterval_ && (goog.log.fine(this.logger_, this.formatMsg_("Will abort after " + this.timeoutInterval_ + "ms if incomplete")), this.timeoutId_ = goog.Timer.callOnce(this.timeout_, this.timeoutInterval_, this)), goog.log.fine(this.logger_, this.formatMsg_("Sending request")), this.inSend_ = !0, this.xhr_.send(content), this.inSend_ = !1;
  } catch (err) {
    goog.log.fine(this.logger_, this.formatMsg_("Send error: " + err.message)), this.error_(goog.net.ErrorCode.EXCEPTION, err);
  }
};
goog.net.XhrIo.prototype.createXhr = function() {
  return this.xmlHttpFactory_ ? this.xmlHttpFactory_.createInstance() : goog.net.XmlHttp();
};
goog.net.XhrIo.prototype.timeout_ = function() {
  "undefined" != typeof goog && this.xhr_ && (this.lastError_ = "Timed out after " + this.timeoutInterval_ + "ms, aborting", this.lastErrorCode_ = goog.net.ErrorCode.TIMEOUT, goog.log.fine(this.logger_, this.formatMsg_(this.lastError_)), this.dispatchEvent(goog.net.EventType.TIMEOUT), this.abort(goog.net.ErrorCode.TIMEOUT));
};
goog.net.XhrIo.prototype.error_ = function(errorCode, err) {
  this.active_ = !1;
  this.xhr_ && (this.inAbort_ = !0, this.xhr_.abort(), this.inAbort_ = !1);
  this.lastError_ = err;
  this.lastErrorCode_ = errorCode;
  this.dispatchErrors_();
  this.cleanUpXhr_();
};
goog.net.XhrIo.prototype.dispatchErrors_ = function() {
  this.errorDispatched_ || (this.errorDispatched_ = !0, this.dispatchEvent(goog.net.EventType.COMPLETE), this.dispatchEvent(goog.net.EventType.ERROR));
};
goog.net.XhrIo.prototype.abort = function(opt_failureCode) {
  this.xhr_ && this.active_ && (goog.log.fine(this.logger_, this.formatMsg_("Aborting")), this.active_ = !1, this.inAbort_ = !0, this.xhr_.abort(), this.inAbort_ = !1, this.lastErrorCode_ = opt_failureCode || goog.net.ErrorCode.ABORT, this.dispatchEvent(goog.net.EventType.COMPLETE), this.dispatchEvent(goog.net.EventType.ABORT), this.cleanUpXhr_());
};
goog.net.XhrIo.prototype.disposeInternal = function() {
  this.xhr_ && (this.active_ && (this.active_ = !1, this.inAbort_ = !0, this.xhr_.abort(), this.inAbort_ = !1), this.cleanUpXhr_(!0));
  goog.net.XhrIo.superClass_.disposeInternal.call(this);
};
goog.net.XhrIo.prototype.onReadyStateChange_ = function() {
  if (!this.isDisposed()) {
    if (this.inOpen_ || this.inSend_ || this.inAbort_) {
      this.onReadyStateChangeHelper_();
    } else {
      this.onReadyStateChangeEntryPoint_();
    }
  }
};
goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = function() {
  this.onReadyStateChangeHelper_();
};
goog.net.XhrIo.prototype.onReadyStateChangeHelper_ = function() {
  if (this.active_ && "undefined" != typeof goog) {
    if (this.xhrOptions_[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR] && this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE && 2 == this.getStatus()) {
      goog.log.fine(this.logger_, this.formatMsg_("Local request error detected and ignored"));
    } else {
      if (this.inSend_ && this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE) {
        goog.Timer.callOnce(this.onReadyStateChange_, 0, this);
      } else {
        if (this.dispatchEvent(goog.net.EventType.READY_STATE_CHANGE), this.isComplete()) {
          goog.log.fine(this.logger_, this.formatMsg_("Request complete"));
          this.active_ = !1;
          try {
            this.isSuccess() ? (this.dispatchEvent(goog.net.EventType.COMPLETE), this.dispatchEvent(goog.net.EventType.SUCCESS)) : (this.lastErrorCode_ = goog.net.ErrorCode.HTTP_ERROR, this.lastError_ = this.getStatusText() + " [" + this.getStatus() + "]", this.dispatchErrors_());
          } finally {
            this.cleanUpXhr_();
          }
        }
      }
    }
  }
};
goog.net.XhrIo.prototype.onProgressHandler_ = function(e, opt_isDownload) {
  goog.asserts.assert(e.type === goog.net.EventType.PROGRESS, "goog.net.EventType.PROGRESS is of the same type as raw XHR progress.");
  this.dispatchEvent(goog.net.XhrIo.buildProgressEvent_(e, goog.net.EventType.PROGRESS));
  this.dispatchEvent(goog.net.XhrIo.buildProgressEvent_(e, opt_isDownload ? goog.net.EventType.DOWNLOAD_PROGRESS : goog.net.EventType.UPLOAD_PROGRESS));
};
goog.net.XhrIo.buildProgressEvent_ = function(e, eventType) {
  return {type:eventType, lengthComputable:e.lengthComputable, loaded:e.loaded, total:e.total};
};
goog.net.XhrIo.prototype.cleanUpXhr_ = function(opt_fromDispose) {
  if (this.xhr_) {
    this.cleanUpTimeoutTimer_();
    var xhr = this.xhr_, clearedOnReadyStateChange = this.xhrOptions_[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION] ? function() {
    } : null;
    this.xhrOptions_ = this.xhr_ = null;
    opt_fromDispose || this.dispatchEvent(goog.net.EventType.READY);
    try {
      xhr.onreadystatechange = clearedOnReadyStateChange;
    } catch (e) {
      goog.log.error(this.logger_, "Problem encountered resetting onreadystatechange: " + e.message);
    }
  }
};
goog.net.XhrIo.prototype.cleanUpTimeoutTimer_ = function() {
  this.timeoutId_ && (goog.Timer.clear(this.timeoutId_), this.timeoutId_ = null);
};
goog.net.XhrIo.prototype.isActive = function() {
  return !!this.xhr_;
};
goog.net.XhrIo.prototype.isComplete = function() {
  return this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE;
};
goog.net.XhrIo.prototype.isSuccess = function() {
  var status = this.getStatus();
  return goog.net.HttpStatus.isSuccess(status) || 0 === status && !this.isLastUriEffectiveSchemeHttp_();
};
goog.net.XhrIo.prototype.isLastUriEffectiveSchemeHttp_ = function() {
  var scheme = goog.uri.utils.getEffectiveScheme(String(this.lastUri_));
  return goog.net.XhrIo.HTTP_SCHEME_PATTERN.test(scheme);
};
goog.net.XhrIo.prototype.getReadyState = function() {
  return this.xhr_ ? this.xhr_.readyState : goog.net.XmlHttp.ReadyState.UNINITIALIZED;
};
goog.net.XhrIo.prototype.getStatus = function() {
  try {
    return this.getReadyState() > goog.net.XmlHttp.ReadyState.LOADED ? this.xhr_.status : -1;
  } catch (e) {
    return -1;
  }
};
goog.net.XhrIo.prototype.getStatusText = function() {
  try {
    return this.getReadyState() > goog.net.XmlHttp.ReadyState.LOADED ? this.xhr_.statusText : "";
  } catch (e) {
    return goog.log.fine(this.logger_, "Can not get status: " + e.message), "";
  }
};
goog.net.XhrIo.prototype.getLastUri = function() {
  return String(this.lastUri_);
};
goog.net.XhrIo.prototype.getResponseText = function() {
  try {
    return this.xhr_ ? this.xhr_.responseText : "";
  } catch (e) {
    return goog.log.fine(this.logger_, "Can not get responseText: " + e.message), "";
  }
};
goog.net.XhrIo.prototype.getResponseBody = function() {
  try {
    if (this.xhr_ && "responseBody" in this.xhr_) {
      return this.xhr_.responseBody;
    }
  } catch (e) {
    goog.log.fine(this.logger_, "Can not get responseBody: " + e.message);
  }
  return null;
};
goog.net.XhrIo.prototype.getResponseXml = function() {
  try {
    return this.xhr_ ? this.xhr_.responseXML : null;
  } catch (e) {
    return goog.log.fine(this.logger_, "Can not get responseXML: " + e.message), null;
  }
};
goog.net.XhrIo.prototype.getResponseJson = function(opt_xssiPrefix) {
  if (this.xhr_) {
    var responseText = this.xhr_.responseText;
    opt_xssiPrefix && 0 == responseText.indexOf(opt_xssiPrefix) && (responseText = responseText.substring(opt_xssiPrefix.length));
    return goog.json.hybrid.parse(responseText);
  }
};
goog.net.XhrIo.prototype.getResponse = function() {
  try {
    if (!this.xhr_) {
      return null;
    }
    if ("response" in this.xhr_) {
      return this.xhr_.response;
    }
    switch(this.responseType_) {
      case goog.net.XhrIo.ResponseType.DEFAULT:
      case goog.net.XhrIo.ResponseType.TEXT:
        return this.xhr_.responseText;
      case goog.net.XhrIo.ResponseType.ARRAY_BUFFER:
        if ("mozResponseArrayBuffer" in this.xhr_) {
          return this.xhr_.mozResponseArrayBuffer;
        }
    }
    goog.log.error(this.logger_, "Response type " + this.responseType_ + " is not supported on this browser");
    return null;
  } catch (e) {
    return goog.log.fine(this.logger_, "Can not get response: " + e.message), null;
  }
};
goog.net.XhrIo.prototype.getResponseHeader = function(key) {
  if (this.xhr_ && this.isComplete()) {
    var value = this.xhr_.getResponseHeader(key);
    return null === value ? void 0 : value;
  }
};
goog.net.XhrIo.prototype.getAllResponseHeaders = function() {
  return this.xhr_ && this.getReadyState() >= goog.net.XmlHttp.ReadyState.LOADED ? this.xhr_.getAllResponseHeaders() || "" : "";
};
goog.net.XhrIo.prototype.getResponseHeaders = function() {
  for (var headersObject = {}, headersArray = this.getAllResponseHeaders().split("\r\n"), i = 0; i < headersArray.length; i++) {
    if (!goog.string.isEmptyOrWhitespace(headersArray[i])) {
      var keyValue = goog.string.splitLimit(headersArray[i], ":", 1), key = keyValue[0], value = keyValue[1];
      if ("string" === typeof value) {
        value = value.trim();
        var values = headersObject[key] || [];
        headersObject[key] = values;
        values.push(value);
      }
    }
  }
  return module$contents$goog$object_map(headersObject, function(values) {
    return values.join(", ");
  });
};
goog.net.XhrIo.prototype.getStreamingResponseHeader = function(key) {
  return this.xhr_ ? this.xhr_.getResponseHeader(key) : null;
};
goog.net.XhrIo.prototype.getAllStreamingResponseHeaders = function() {
  return this.xhr_ ? this.xhr_.getAllResponseHeaders() : "";
};
goog.net.XhrIo.prototype.getLastErrorCode = function() {
  return this.lastErrorCode_;
};
goog.net.XhrIo.prototype.getLastError = function() {
  return "string" === typeof this.lastError_ ? this.lastError_ : String(this.lastError_);
};
goog.net.XhrIo.prototype.formatMsg_ = function(msg) {
  return msg + " [" + this.lastMethod_ + " " + this.lastUri_ + " " + this.getStatus() + "]";
};
goog.debug.entryPointRegistry.register(function(transformer) {
  goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = transformer(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_);
});
safevalues.safeAttrPrefix = module$contents$safevalues$builders$attribute_builders_safeAttrPrefix;
safevalues.htmlFragment = module$contents$safevalues$builders$document_fragment_builders_htmlFragment;
safevalues.htmlToNode = module$contents$safevalues$builders$document_fragment_builders_htmlToNode;
safevalues.svgFragment = module$contents$safevalues$builders$document_fragment_builders_svgFragment;
safevalues.concatHtmls = module$exports$safevalues$index.concatHtmls;
safevalues.createHtml = module$exports$safevalues$index.createHtml;
safevalues.doctypeHtml = module$exports$safevalues$index.doctypeHtml;
safevalues.htmlEscape = module$exports$safevalues$index.htmlEscape;
safevalues.joinHtmls = module$exports$safevalues$index.joinHtmls;
safevalues.nodeToHtml = module$exports$safevalues$index.nodeToHtml;
safevalues.scriptToHtml = module$exports$safevalues$index.scriptToHtml;
safevalues.scriptUrlToHtml = module$exports$safevalues$index.scriptUrlToHtml;
safevalues.styleSheetToHtml = module$exports$safevalues$index.styleSheetToHtml;
safevalues.HtmlFormatter = module$exports$safevalues$builders$html_formatter.HtmlFormatter;
safevalues.sanitizeHtml = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtml;
safevalues.sanitizeHtmlAssertUnchanged = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlAssertUnchanged;
safevalues.sanitizeHtmlToFragment = module$contents$safevalues$builders$html_sanitizer$html_sanitizer_sanitizeHtmlToFragment;
safevalues.HtmlSanitizer = module$exports$safevalues$index.HtmlSanitizer;
safevalues.HtmlSanitizerBuilder = module$exports$safevalues$builders$html_sanitizer$html_sanitizer_builder.HtmlSanitizerBuilder;
safevalues.appendParams = module$contents$safevalues$builders$resource_url_builders_appendParams;
safevalues.appendPathSegment = module$contents$safevalues$builders$resource_url_builders_appendPathSegment;
safevalues.objectUrlFromScript = module$contents$safevalues$builders$resource_url_builders_objectUrlFromScript;
safevalues.replaceFragment = module$contents$safevalues$builders$resource_url_builders_replaceFragment;
safevalues.toAbsoluteResourceUrl = module$contents$safevalues$builders$resource_url_builders_toAbsoluteResourceUrl;
safevalues.trustedResourceUrl = module$contents$safevalues$builders$resource_url_builders_trustedResourceUrl;
safevalues.concatScripts = module$contents$safevalues$builders$script_builders_concatScripts;
safevalues.safeScript = module$contents$safevalues$builders$script_builders_safeScript;
safevalues.safeScriptWithArgs = module$contents$safevalues$builders$script_builders_safeScriptWithArgs;
safevalues.valueAsScript = module$contents$safevalues$builders$script_builders_valueAsScript;
safevalues.concatStyles = module$contents$safevalues$builders$style_builders_concatStyles;
safevalues.safeStyle = module$contents$safevalues$builders$style_builders_safeStyle;
safevalues.styleForMigration = module$contents$safevalues$builders$style_builders_styleForMigration;
safevalues.concatStyleSheets = module$contents$safevalues$builders$style_sheet_builders_concatStyleSheets;
safevalues.safeStyleRule = module$contents$safevalues$builders$style_sheet_builders_safeStyleRule;
safevalues.safeStyleSheet = module$contents$safevalues$builders$style_sheet_builders_safeStyleSheet;
safevalues.SanitizableUrlScheme = module$exports$safevalues$builders$url_builders.SanitizableUrlScheme;
safevalues.addJavaScriptUrlSanitizationCallback = module$contents$safevalues$builders$url_builders_addJavaScriptUrlSanitizationCallback;
safevalues.fromMediaSource = module$contents$safevalues$builders$url_builders_fromMediaSource;
safevalues.fromTrustedResourceUrl = module$contents$safevalues$builders$url_builders_fromTrustedResourceUrl;
safevalues.objectUrlFromSafeSource = module$contents$safevalues$builders$url_builders_objectUrlFromSafeSource;
safevalues.removeJavaScriptUrlSanitizationCallback = module$contents$safevalues$builders$url_builders_removeJavaScriptUrlSanitizationCallback;
safevalues.safeUrl = module$contents$safevalues$builders$url_builders_safeUrl;
safevalues.sanitizeUrl = module$contents$safevalues$builders$url_builders_sanitizeUrl;
safevalues.trySanitizeUrl = module$contents$safevalues$builders$url_builders_trySanitizeUrl;
safevalues.Scheme = module$exports$safevalues$index.Scheme;
safevalues.SafeAttributePrefix = module$exports$safevalues$internals$attribute_impl.SafeAttributePrefix;
safevalues.unwrapAttributePrefix = module$contents$safevalues$internals$attribute_impl_unwrapAttributePrefix;
safevalues.EMPTY_HTML = module$exports$safevalues$index.EMPTY_HTML;
safevalues.SafeHtml = module$exports$safevalues$index.SafeHtml;
safevalues.isHtml = module$exports$safevalues$index.isHtml;
safevalues.unwrapHtml = module$exports$safevalues$index.unwrapHtml;
safevalues.TrustedResourceUrl = goog.html.TrustedResourceUrl;
safevalues.isResourceUrl = module$contents$safevalues$internals$resource_url_impl_isResourceUrl;
safevalues.unwrapResourceUrl = module$contents$safevalues$internals$resource_url_impl_unwrapResourceUrl;
safevalues.EMPTY_SCRIPT = module$exports$safevalues$internals$script_impl.EMPTY_SCRIPT;
safevalues.SafeScript = module$exports$safevalues$internals$script_impl.SafeScript;
safevalues.isScript = module$contents$safevalues$internals$script_impl_isScript;
safevalues.unwrapScript = module$contents$safevalues$internals$script_impl_unwrapScript;
safevalues.SafeStyle = module$contents$goog$html$SafeStyle_SafeStyle;
safevalues.isStyle = module$contents$safevalues$internals$style_impl_isStyle;
safevalues.unwrapStyle = module$contents$safevalues$internals$style_impl_unwrapStyle;
safevalues.SafeStyleSheet = module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;
safevalues.isStyleSheet = module$contents$safevalues$internals$style_sheet_impl_isStyleSheet;
safevalues.unwrapStyleSheet = module$contents$safevalues$internals$style_sheet_impl_unwrapStyleSheet;
safevalues.ABOUT_BLANK = module$exports$safevalues$internals$url_impl.ABOUT_BLANK;
safevalues.INNOCUOUS_URL = module$exports$safevalues$internals$url_impl.INNOCUOUS_URL;
safevalues.SafeUrl = module$exports$safevalues$internals$url_impl.SafeUrl;
safevalues.isUrl = module$contents$safevalues$internals$url_impl_isUrl;
safevalues.unwrapUrl = module$contents$safevalues$internals$url_impl_unwrapUrl;
safevalues.reportOnlyHtmlPassthrough = module$contents$safevalues$reporting$reporting_reportOnlyHtmlPassthrough;
var $jscomp$templatelit$m1153655765$99 = $jscomp.createTemplateTagFirstArg(["https://accounts.google.com/gsi/client"]);
ee.apiclient = {};
var module$contents$ee$apiclient_apiclient = {};
ee.apiclient.VERSION = module$exports$ee$apiVersion.V1;
ee.apiclient.API_CLIENT_VERSION = "0.1.403";
ee.apiclient.NULL_VALUE = module$exports$eeapiclient$domain_object.NULL_VALUE;
ee.apiclient.PromiseRequestService = module$exports$eeapiclient$promise_request_service.PromiseRequestService;
ee.apiclient.MakeRequestParams = module$contents$eeapiclient$request_params_MakeRequestParams;
ee.apiclient.deserialize = module$contents$eeapiclient$domain_object_deserialize;
ee.apiclient.serialize = module$contents$eeapiclient$domain_object_serialize;
var module$contents$ee$apiclient_Call = function(callback, retries) {
  module$contents$ee$apiclient_apiclient.initialize();
  this.callback = callback;
  this.requestService = new module$contents$ee$apiclient_EERequestService(!callback, retries);
};
module$contents$ee$apiclient_Call.prototype.withDetectPartialError = function(detectPartialError) {
  this.requestService.detectPartialError = detectPartialError;
  return this;
};
module$contents$ee$apiclient_Call.prototype.handle = function(response) {
  var $jscomp$this$m1153655765$3 = this;
  if (response instanceof Promise) {
    if (this.callback) {
      var callback = function(result, error) {
        try {
          return $jscomp$this$m1153655765$3.callback(result, error);
        } catch (callbackError) {
          setTimeout(function() {
            throw callbackError;
          }, 0);
        }
      };
      response.then(callback, function(error) {
        return callback(void 0, error);
      });
    }
  } else {
    response.then(function(result) {
      response = result;
    });
  }
  return response;
};
module$contents$ee$apiclient_Call.prototype.projectsPath = function() {
  return "projects/" + module$contents$ee$apiclient_apiclient.getProject();
};
module$contents$ee$apiclient_Call.prototype.algorithms = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsAlgorithmsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.projects = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.assets = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsAssetsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.operations = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsOperationsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.value = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsValueApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.maps = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsMapsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.map = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsMapApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.image = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsImageApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.table = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsTableApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.tables = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsTablesApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.video = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsVideoApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.videoMap = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsVideoMapApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.classifier = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsClassifierApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.featureView = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsFeatureViewApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.thumbnails = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsThumbnailsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.videoThumbnails = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsVideoThumbnailsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
module$contents$ee$apiclient_Call.prototype.filmstripThumbnails = function() {
  return new module$exports$eeapiclient$ee_api_client.ProjectsFilmstripThumbnailsApiClientImpl(module$exports$ee$apiVersion.V1, this.requestService);
};
var module$contents$ee$apiclient_EERequestService = function(sync, retries) {
  this.sync = sync = void 0 === sync ? !1 : sync;
  this.detectPartialError = void 0;
  this.retries = null != retries ? retries : sync ? module$contents$ee$apiclient_apiclient.MAX_SYNC_RETRIES_ : module$contents$ee$apiclient_apiclient.MAX_ASYNC_RETRIES_;
};
$jscomp.inherits(module$contents$ee$apiclient_EERequestService, module$exports$eeapiclient$promise_request_service.PromiseRequestService);
module$contents$ee$apiclient_EERequestService.prototype.send = function(params, responseCtor) {
  var $jscomp$this$m1153655765$23 = this;
  module$contents$eeapiclient$request_params_processParams(params);
  var path = params.path || "", url = module$contents$ee$apiclient_apiclient.getSafeApiUrl() + path, args = module$contents$ee$apiclient_apiclient.makeRequest_(params.queryParams || {}), body = params.body ? JSON.stringify(params.body) : void 0;
  if (this.sync) {
    var raw = module$contents$ee$apiclient_apiclient.send(url, args, void 0, params.httpMethod, body, this.retries, this.detectPartialError), value = responseCtor ? module$contents$eeapiclient$domain_object_deserialize(responseCtor, raw) : raw, thenable = function(v) {
      return {then:function(f) {
        return thenable(f(v));
      }};
    };
    return thenable(value);
  }
  return (new Promise(function(resolve, reject) {
    module$contents$ee$apiclient_apiclient.send(url, args, function(value, error) {
      error ? reject(error) : resolve(value);
    }, params.httpMethod, body, $jscomp$this$m1153655765$23.retries, $jscomp$this$m1153655765$23.detectPartialError);
  })).then(function(r) {
    return responseCtor ? module$contents$eeapiclient$domain_object_deserialize(responseCtor, r) : r;
  });
};
module$contents$ee$apiclient_EERequestService.prototype.makeRequest = function(params) {
};
var module$contents$ee$apiclient_BatchCall = function(callback) {
  module$contents$ee$apiclient_Call.call(this, callback);
  this.requestService = new module$contents$ee$apiclient_BatchRequestService();
  this.detectPartialError = void 0;
};
$jscomp.inherits(module$contents$ee$apiclient_BatchCall, module$contents$ee$apiclient_Call);
module$contents$ee$apiclient_BatchCall.prototype.withDetectPartialError = function(detectPartialError) {
  this.detectPartialError = detectPartialError;
  return this;
};
module$contents$ee$apiclient_BatchCall.prototype.send = function(parts, getResponse) {
  var $jscomp$this$m1153655765$27 = this, batchUrl = module$contents$ee$apiclient_apiclient.getSafeApiUrl() + "/batch", body = parts.map(function($jscomp$destructuring$var40) {
    var $jscomp$destructuring$var41 = $jscomp.makeIterator($jscomp$destructuring$var40), id = $jscomp$destructuring$var41.next().value, $jscomp$destructuring$var42 = $jscomp.makeIterator($jscomp$destructuring$var41.next().value), partBody = $jscomp$destructuring$var42.next().value, ctor = $jscomp$destructuring$var42.next().value;
    return "--batch_EARTHENGINE_batch\r\nContent-Type: application/http\r\nContent-Transfer-Encoding: binary\r\nMIME-Version: 1.0\r\nContent-ID: <" + id + ">\r\n\r\n" + partBody + "\r\n";
  }).join("") + "--batch_EARTHENGINE_batch--\r\n", deserializeResponses = function(response) {
    var result = {};
    parts.forEach(function($jscomp$destructuring$var43) {
      var $jscomp$destructuring$var44 = $jscomp.makeIterator($jscomp$destructuring$var43), id = $jscomp$destructuring$var44.next().value, $jscomp$destructuring$var45 = $jscomp.makeIterator($jscomp$destructuring$var44.next().value), partBody = $jscomp$destructuring$var45.next().value, ctor = $jscomp$destructuring$var45.next().value;
      null != response[id] && (result[id] = module$contents$eeapiclient$domain_object_deserialize(ctor, response[id]));
    });
    return getResponse ? getResponse(result) : result;
  };
  return this.callback ? (module$contents$ee$apiclient_apiclient.send(batchUrl, null, function(result, err) {
    return $jscomp$this$m1153655765$27.callback(err ? result : deserializeResponses(result), err);
  }, "multipart/mixed; boundary=batch_EARTHENGINE_batch", body, void 0, this.detectPartialError), null) : deserializeResponses(module$contents$ee$apiclient_apiclient.send(batchUrl, null, void 0, "multipart/mixed; boundary=batch_EARTHENGINE_batch", body, void 0, this.detectPartialError));
};
var module$contents$ee$apiclient_BatchRequestService = function() {
};
$jscomp.inherits(module$contents$ee$apiclient_BatchRequestService, module$exports$eeapiclient$promise_request_service.PromiseRequestService);
module$contents$ee$apiclient_BatchRequestService.prototype.send = function(params, responseCtor) {
  var request = [params.httpMethod + " " + params.path + " HTTP/1.1"];
  request.push("Content-Type: application/json; charset=utf-8");
  var authToken = module$contents$ee$apiclient_apiclient.getAuthToken();
  null != authToken && request.push("Authorization: " + authToken);
  var body = params.body ? JSON.stringify(params.body) : "";
  return [request.join("\r\n") + "\r\n\r\n" + body, responseCtor];
};
module$contents$ee$apiclient_BatchRequestService.prototype.makeRequest = function(params) {
};
module$contents$ee$apiclient_apiclient.parseBatchReply = function(contentType, responseText, handle) {
  for (var boundary = contentType.split("; boundary=")[1], $jscomp$iter$41 = $jscomp.makeIterator(responseText.split("--" + boundary)), $jscomp$key$m1153655765$100$part = $jscomp$iter$41.next(); !$jscomp$key$m1153655765$100$part.done; $jscomp$key$m1153655765$100$part = $jscomp$iter$41.next()) {
    var groups = $jscomp$key$m1153655765$100$part.value.split("\r\n\r\n");
    if (!(3 > groups.length)) {
      var id = groups[0].match(/\r\nContent-ID: <response-([^>]*)>/)[1], status = Number(groups[1].match(/^HTTP\S*\s(\d+)\s/)[1]), text = groups.slice(2).join("\r\n\r\n");
      handle(id, status, text);
    }
  }
};
module$contents$ee$apiclient_apiclient.setApiKey = function(apiKey) {
  module$contents$ee$apiclient_apiclient.cloudApiKey_ = apiKey;
};
module$contents$ee$apiclient_apiclient.getApiKey = function() {
  return module$contents$ee$apiclient_apiclient.cloudApiKey_;
};
module$contents$ee$apiclient_apiclient.DEFAULT_PROJECT_ = "earthengine-legacy";
module$contents$ee$apiclient_apiclient.setProject = function(project) {
  module$contents$ee$apiclient_apiclient.project_ = project;
};
module$contents$ee$apiclient_apiclient.getProject = function() {
  return module$contents$ee$apiclient_apiclient.project_;
};
module$contents$ee$apiclient_apiclient.getSafeApiUrl = function() {
  var url = module$contents$ee$apiclient_apiclient.apiBaseUrl_.replace(/\/api$/, "");
  return "window" in goog.global && !url.match(/^https?:\/\/content-/) ? url.replace(/^(https?:\/\/)(.*\.googleapis\.com)$/, "$1content-$2") : url;
};
module$contents$ee$apiclient_apiclient.mergeAuthScopes_ = function(includeDefaultScopes, includeStorageScope, extraScopes) {
  var scopes = [];
  includeDefaultScopes && (scopes = scopes.concat(module$contents$ee$apiclient_apiclient.DEFAULT_AUTH_SCOPES_));
  includeStorageScope && scopes.push(module$contents$ee$apiclient_apiclient.STORAGE_SCOPE_);
  scopes = scopes.concat(extraScopes);
  module$contents$goog$array_removeDuplicates(scopes);
  return scopes;
};
module$contents$ee$apiclient_apiclient.setAuthToken = function(clientId, tokenType, accessToken, expiresIn, extraScopes, callback, updateAuthLibrary, suppressDefaultScopes) {
  var scopes = module$contents$ee$apiclient_apiclient.mergeAuthScopes_(!suppressDefaultScopes, !1, extraScopes || []);
  module$contents$ee$apiclient_apiclient.authClientId_ = clientId;
  module$contents$ee$apiclient_apiclient.authScopes_ = scopes;
  var tokenObject = {token_type:tokenType, access_token:accessToken, state:scopes.join(" "), expires_in:expiresIn};
  module$contents$ee$apiclient_apiclient.handleAuthResult_(void 0, void 0, tokenObject);
  !1 === updateAuthLibrary ? callback && callback() : module$contents$ee$apiclient_apiclient.ensureAuthLibLoaded_(function() {
    callback && callback();
  });
};
module$contents$ee$apiclient_apiclient.refreshAuthToken = function(success, error, onImmediateFailed) {
  if (module$contents$ee$apiclient_apiclient.isAuthTokenRefreshingEnabled_()) {
    var authArgs = {client_id:String(module$contents$ee$apiclient_apiclient.authClientId_), scope:module$contents$ee$apiclient_apiclient.authScopes_.join(" "), plugin_name:"earthengine"};
    module$contents$ee$apiclient_apiclient.authTokenRefresher_(authArgs, function(result) {
      if ("immediate_failed" == result.error && onImmediateFailed) {
        onImmediateFailed();
      } else {
        if ("window" in goog.global) {
          try {
            module$contents$ee$apiclient_apiclient.ensureAuthLibLoaded_(function() {
              try {
                module$contents$ee$apiclient_apiclient.handleAuthResult_(success, error, result);
              } catch (e) {
                error(e.toString());
              }
            });
          } catch (e) {
            error(e.toString());
          }
        } else {
          module$contents$ee$apiclient_apiclient.handleAuthResult_(success, error, result);
        }
      }
    });
  }
};
module$contents$ee$apiclient_apiclient.setAuthTokenRefresher = function(refresher) {
  module$contents$ee$apiclient_apiclient.authTokenRefresher_ = refresher;
};
module$contents$ee$apiclient_apiclient.getAuthToken = function() {
  module$contents$ee$apiclient_apiclient.authTokenExpiration_ && 0 <= Date.now() - module$contents$ee$apiclient_apiclient.authTokenExpiration_ && module$contents$ee$apiclient_apiclient.clearAuthToken();
  return module$contents$ee$apiclient_apiclient.authToken_;
};
module$contents$ee$apiclient_apiclient.clearAuthToken = function() {
  module$contents$ee$apiclient_apiclient.authToken_ = null;
  module$contents$ee$apiclient_apiclient.authTokenExpiration_ = null;
};
module$contents$ee$apiclient_apiclient.getAuthClientId = function() {
  return module$contents$ee$apiclient_apiclient.authClientId_;
};
module$contents$ee$apiclient_apiclient.getAuthScopes = function() {
  return module$contents$ee$apiclient_apiclient.authScopes_;
};
module$contents$ee$apiclient_apiclient.setAuthClient = function(clientId, scopes) {
  module$contents$ee$apiclient_apiclient.authClientId_ = clientId;
  module$contents$ee$apiclient_apiclient.authScopes_ = scopes;
};
module$contents$ee$apiclient_apiclient.setAppIdToken = function(token) {
  module$contents$ee$apiclient_apiclient.appIdToken_ = token;
};
module$contents$ee$apiclient_apiclient.initialize = function(apiBaseUrl, tileBaseUrl, xsrfToken, project) {
  null != apiBaseUrl ? module$contents$ee$apiclient_apiclient.apiBaseUrl_ = apiBaseUrl : module$contents$ee$apiclient_apiclient.initialized_ || (module$contents$ee$apiclient_apiclient.apiBaseUrl_ = module$contents$ee$apiclient_apiclient.DEFAULT_API_BASE_URL_);
  null != tileBaseUrl ? module$contents$ee$apiclient_apiclient.tileBaseUrl_ = tileBaseUrl : module$contents$ee$apiclient_apiclient.initialized_ || (module$contents$ee$apiclient_apiclient.tileBaseUrl_ = module$contents$ee$apiclient_apiclient.DEFAULT_TILE_BASE_URL_);
  void 0 !== xsrfToken && (module$contents$ee$apiclient_apiclient.xsrfToken_ = xsrfToken);
  null != project ? module$contents$ee$apiclient_apiclient.setProject(project) : module$contents$ee$apiclient_apiclient.setProject(module$contents$ee$apiclient_apiclient.getProject() || module$contents$ee$apiclient_apiclient.DEFAULT_PROJECT_);
  module$contents$ee$apiclient_apiclient.initialized_ = !0;
};
module$contents$ee$apiclient_apiclient.reset = function() {
  module$contents$ee$apiclient_apiclient.apiBaseUrl_ = null;
  module$contents$ee$apiclient_apiclient.tileBaseUrl_ = null;
  module$contents$ee$apiclient_apiclient.xsrfToken_ = null;
  module$contents$ee$apiclient_apiclient.initialized_ = !1;
};
module$contents$ee$apiclient_apiclient.setDeadline = function(milliseconds) {
  module$contents$ee$apiclient_apiclient.deadlineMs_ = milliseconds;
};
module$contents$ee$apiclient_apiclient.setParamAugmenter = function(augmenter) {
  module$contents$ee$apiclient_apiclient.paramAugmenter_ = augmenter || goog.functions.identity;
};
module$contents$ee$apiclient_apiclient.getApiBaseUrl = function() {
  return module$contents$ee$apiclient_apiclient.apiBaseUrl_;
};
module$contents$ee$apiclient_apiclient.getTileBaseUrl = function() {
  return module$contents$ee$apiclient_apiclient.tileBaseUrl_;
};
module$contents$ee$apiclient_apiclient.getXsrfToken = function() {
  return module$contents$ee$apiclient_apiclient.xsrfToken_;
};
module$contents$ee$apiclient_apiclient.isInitialized = function() {
  return module$contents$ee$apiclient_apiclient.initialized_;
};
module$contents$ee$apiclient_apiclient.send = function(path, params, callback, method, body, retries, detectPartialError) {
  module$contents$ee$apiclient_apiclient.initialize();
  var profileHookAtCallTime = module$contents$ee$apiclient_apiclient.profileHook_, contentType = "application/x-www-form-urlencoded";
  body && (contentType = "application/json", method && method.startsWith("multipart") && (contentType = method, method = "POST"));
  method = method || "POST";
  var headers = {"Content-Type":contentType}, version = "0.1.403";
  "0.1.403" === version && (version = "latest");
  headers[module$contents$ee$apiclient_apiclient.API_CLIENT_VERSION_HEADER] = "ee-js/" + version;
  var authToken = module$contents$ee$apiclient_apiclient.getAuthToken();
  if (null != authToken) {
    headers.Authorization = authToken;
  } else if (callback && module$contents$ee$apiclient_apiclient.isAuthTokenRefreshingEnabled_()) {
    return module$contents$ee$apiclient_apiclient.refreshAuthToken(function() {
      module$contents$ee$apiclient_apiclient.withProfiling(profileHookAtCallTime, function() {
        module$contents$ee$apiclient_apiclient.send(path, params, callback, method);
      });
    }), null;
  }
  params = params ? params.clone() : new goog.Uri.QueryData();
  null != module$contents$ee$apiclient_apiclient.cloudApiKey_ && params.add("key", module$contents$ee$apiclient_apiclient.cloudApiKey_);
  profileHookAtCallTime && (headers[module$contents$ee$apiclient_apiclient.PROFILE_REQUEST_HEADER] = "1");
  module$contents$ee$apiclient_apiclient.getProject() && module$contents$ee$apiclient_apiclient.getProject() !== module$contents$ee$apiclient_apiclient.DEFAULT_PROJECT_ && (headers[module$contents$ee$apiclient_apiclient.USER_PROJECT_OVERRIDE_HEADER_] = module$contents$ee$apiclient_apiclient.getProject());
  params = module$contents$ee$apiclient_apiclient.paramAugmenter_(params, path);
  null != module$contents$ee$apiclient_apiclient.xsrfToken_ && (headers["X-XSRF-Token"] = module$contents$ee$apiclient_apiclient.xsrfToken_);
  null != module$contents$ee$apiclient_apiclient.appIdToken_ && (headers[module$contents$ee$apiclient_apiclient.APP_ID_TOKEN_HEADER_] = module$contents$ee$apiclient_apiclient.appIdToken_);
  var requestData = body || null, paramString = params ? params.toString() : "";
  "POST" === method && void 0 === body ? requestData = paramString : goog.string.isEmptyOrWhitespace(paramString) || (path += goog.string.contains(path, "?") ? "&" : "?", path += paramString);
  var url = path.startsWith("/") ? module$contents$ee$apiclient_apiclient.apiBaseUrl_ + path : path;
  if (callback) {
    return module$contents$ee$apiclient_apiclient.requestQueue_.push(module$contents$ee$apiclient_apiclient.buildAsyncRequest_(url, callback, method, requestData, headers, retries, detectPartialError)), module$contents$ee$apiclient_apiclient.RequestThrottle_.fire(), null;
  }
  for (var setRequestHeader = function(value, key) {
    this.setRequestHeader && this.setRequestHeader(key, value);
  }, xmlHttp, retryCount = 0, maxRetries = null != retries ? retries : module$contents$ee$apiclient_apiclient.MAX_SYNC_RETRIES_;;) {
    xmlHttp = (0,goog.net.XmlHttp)();
    xmlHttp.open(method, url, !1);
    module$contents$goog$object_forEach(headers, setRequestHeader, xmlHttp);
    xmlHttp.send(requestData);
    if (429 != xmlHttp.status || retryCount > maxRetries) {
      break;
    }
    retryCount++;
  }
  return module$contents$ee$apiclient_apiclient.handleResponse_(xmlHttp.status, function getResponseHeaderSafe(header) {
    try {
      return xmlHttp.getResponseHeader(header);
    } catch (e) {
      return null;
    }
  }, xmlHttp.responseText, profileHookAtCallTime, void 0, url, method, detectPartialError);
};
module$contents$ee$apiclient_apiclient.buildAsyncRequest_ = function(url, callback, method, content, headers, retries, detectPartialError) {
  var retryCount = 0, request = {url:url, method:method, content:content, headers:headers}, profileHookAtCallTime = module$contents$ee$apiclient_apiclient.profileHook_, maxRetries = null != retries ? retries : module$contents$ee$apiclient_apiclient.MAX_ASYNC_RETRIES_;
  request.callback = function(e) {
    var xhrIo = e.target;
    return 429 == xhrIo.getStatus() && retryCount < maxRetries ? (retryCount++, setTimeout(function() {
      module$contents$ee$apiclient_apiclient.requestQueue_.push(request);
      module$contents$ee$apiclient_apiclient.RequestThrottle_.fire();
    }, module$contents$ee$apiclient_apiclient.calculateRetryWait_(retryCount)), null) : module$contents$ee$apiclient_apiclient.handleResponse_(xhrIo.getStatus(), goog.bind(xhrIo.getResponseHeader, xhrIo), xhrIo.getResponseText(), profileHookAtCallTime, callback, url, method, detectPartialError);
  };
  return request;
};
module$contents$ee$apiclient_apiclient.withProfiling = function(hook, body, thisObject) {
  var saved = module$contents$ee$apiclient_apiclient.profileHook_;
  try {
    return module$contents$ee$apiclient_apiclient.profileHook_ = hook, body.call(thisObject);
  } finally {
    module$contents$ee$apiclient_apiclient.profileHook_ = saved;
  }
};
module$contents$ee$apiclient_apiclient.handleResponse_ = function(status, getResponseHeader, responseText, profileHook, callback, url, method, detectPartialError) {
  var profileId = profileHook ? getResponseHeader(module$contents$ee$apiclient_apiclient.PROFILE_HEADER) : "";
  profileId && profileHook && profileHook(profileId);
  var parseJson = function(body) {
    try {
      var response = JSON.parse(body);
      return !(goog.isObject(response) && "error" in response && "message" in response.error) || detectPartialError && detectPartialError(response) ? {parsed:response} : response.error.message;
    } catch (e) {
      return "Invalid JSON: " + body;
    }
  }, statusError = function(status) {
    if (0 === status) {
      return "Failed to contact Earth Engine servers. Please check your connection, firewall, or browser extension settings.";
    }
    if (200 > status || 300 <= status) {
      return "Server returned HTTP code: " + status + " for " + method + " " + url;
    }
  }, errorMessage, data, typeHeader = getResponseHeader("Content-Type") || "application/json", contentType = typeHeader.replace(/;.*/, "");
  if ("application/json" === contentType || "text/json" === contentType) {
    var response = parseJson(responseText);
    response.parsed ? data = response.parsed : errorMessage = response;
  } else if ("multipart/mixed" === contentType) {
    data = {};
    var errors = [];
    module$contents$ee$apiclient_apiclient.parseBatchReply(typeHeader, responseText, function(id, status, text) {
      var response = parseJson(text);
      response.parsed && (data[id] = response.parsed);
      var error = (response.parsed ? "" : response) || statusError(status);
      error && errors.push(id + ": " + error);
    });
    errors.length && (errorMessage = errors.join("\n"));
  } else {
    var typeError = "Response was unexpectedly not JSON, but " + contentType;
  }
  errorMessage = errorMessage || statusError(status) || typeError;
  if (callback) {
    return callback(data, errorMessage), null;
  }
  if (!errorMessage) {
    return data;
  }
  throw Error(errorMessage);
};
module$contents$ee$apiclient_apiclient.ensureAuthLibLoaded_ = function(callback) {
  var done = function() {
    module$contents$ee$apiclient_apiclient.authTokenRefresher_ || module$contents$ee$apiclient_apiclient.setAuthTokenRefresher(function(authArgs, refresherCallback) {
      goog.global.google.accounts.oauth2.initTokenClient({client_id:authArgs.client_id, callback:refresherCallback, scope:authArgs.scope}).requestAccessToken();
    });
    callback();
  };
  (function() {
    goog.isObject(goog.global.default_gsi) ? done() : goog.net.jsloader.safeLoad(module$contents$safevalues$builders$resource_url_builders_trustedResourceUrl($jscomp$templatelit$m1153655765$99)).addCallback(done);
  })();
};
module$contents$ee$apiclient_apiclient.handleAuthResult_ = function(success, error, result) {
  if (result.access_token) {
    var token = result.token_type + " " + result.access_token;
    if (result.expires_in || 0 === result.expires_in) {
      var expiresInMs = 900 * result.expires_in, timeout = setTimeout(module$contents$ee$apiclient_apiclient.refreshAuthToken, .9 * expiresInMs);
      void 0 !== timeout.unref && timeout.unref();
      module$contents$ee$apiclient_apiclient.authTokenExpiration_ = Date.now() + expiresInMs;
    }
    module$contents$ee$apiclient_apiclient.authToken_ = token;
    success && success();
  } else {
    error && error(result.error || "Unknown error.");
  }
};
module$contents$ee$apiclient_apiclient.makeRequest_ = function(params) {
  for (var request = new goog.Uri.QueryData(), $jscomp$iter$42 = $jscomp.makeIterator(Object.entries(params)), $jscomp$key$m1153655765$101$ = $jscomp$iter$42.next(); !$jscomp$key$m1153655765$101$.done; $jscomp$key$m1153655765$101$ = $jscomp$iter$42.next()) {
    var $jscomp$destructuring$var47 = $jscomp.makeIterator($jscomp$key$m1153655765$101$.value), name = $jscomp$destructuring$var47.next().value, item = $jscomp$destructuring$var47.next().value;
    request.set(name, item);
  }
  return request;
};
module$contents$ee$apiclient_apiclient.setupMockSend = function(calls) {
  function getResponse(url, method, data) {
    url = url.replace(apiBaseUrl, "").replace(module$exports$ee$apiVersion.V1 + "/projects/" + module$contents$ee$apiclient_apiclient.DEFAULT_PROJECT_ + "/", "");
    if (url in calls) {
      var response = calls[url];
    } else {
      throw Error(url + " mock response not specified");
    }
    "function" === typeof response && (response = response(url, method, data));
    "string" === typeof response && (response = {text:response, status:200, contentType:"application/json; charset=utf-8"});
    if ("string" !== typeof response.text) {
      throw Error(url + " mock response missing/invalid text");
    }
    if ("number" !== typeof response.status && "function" !== typeof response.status) {
      throw Error(url + " mock response missing/invalid status");
    }
    return response;
  }
  calls = calls ? module$contents$goog$object_clone(calls) : {};
  var apiBaseUrl;
  goog.net.XhrIo.send = function(url, callback, method, data) {
    apiBaseUrl = apiBaseUrl || module$contents$ee$apiclient_apiclient.apiBaseUrl_;
    var responseData = getResponse(url, method, data), e = new function() {
      this.target = {};
    }();
    e.target.getResponseText = function() {
      return responseData.text;
    };
    e.target.getStatus = "function" === typeof responseData.status ? responseData.status : function() {
      return responseData.status;
    };
    e.target.getResponseHeader = function(header) {
      return "Content-Type" === header ? responseData.contentType : null;
    };
    setTimeout(goog.bind(callback, e, e), 0);
    return new goog.net.XhrIo();
  };
  var fakeXmlHttp = function() {
  };
  fakeXmlHttp.prototype.open = function(method, urlIn) {
    apiBaseUrl = apiBaseUrl || module$contents$ee$apiclient_apiclient.apiBaseUrl_;
    this.url = urlIn;
    this.method = method;
  };
  fakeXmlHttp.prototype.setRequestHeader = function() {
  };
  fakeXmlHttp.prototype.getResponseHeader = function(header) {
    return "Content-Type" === header ? this.contentType_ || null : null;
  };
  fakeXmlHttp.prototype.send = function(data) {
    var responseData = getResponse(this.url, this.method, data);
    this.responseText = responseData.text;
    this.status = "function" === typeof responseData.status ? responseData.status() : responseData.status;
    this.contentType_ = responseData.contentType;
  };
  goog.net.XmlHttp.setGlobalFactory({createInstance:function() {
    return new fakeXmlHttp();
  }, getOptions:function() {
    return {};
  }});
};
module$contents$ee$apiclient_apiclient.isAuthTokenRefreshingEnabled_ = function() {
  return !(!module$contents$ee$apiclient_apiclient.authTokenRefresher_ || !module$contents$ee$apiclient_apiclient.authClientId_);
};
module$contents$ee$apiclient_apiclient.calculateRetryWait_ = function(retryCount) {
  return Math.min(module$contents$ee$apiclient_apiclient.MAX_RETRY_WAIT_, Math.pow(2, retryCount) * module$contents$ee$apiclient_apiclient.BASE_RETRY_WAIT_);
};
module$contents$ee$apiclient_apiclient.sleep_ = function(timeInMs) {
  for (var end = (new Date()).getTime() + timeInMs; (new Date()).getTime() < end;) {
  }
};
module$contents$ee$apiclient_apiclient.NetworkRequest_ = function() {
};
module$contents$ee$apiclient_apiclient.requestQueue_ = [];
module$contents$ee$apiclient_apiclient.REQUEST_THROTTLE_INTERVAL_MS_ = 350;
module$contents$ee$apiclient_apiclient.RequestThrottle_ = new module$contents$goog$async$Throttle_Throttle(function() {
  var request = module$contents$ee$apiclient_apiclient.requestQueue_.shift();
  request && goog.net.XhrIo.send(request.url, request.callback, request.method, request.content, request.headers, module$contents$ee$apiclient_apiclient.deadlineMs_);
  module$contents$goog$array_isEmpty(module$contents$ee$apiclient_apiclient.requestQueue_) || module$contents$ee$apiclient_apiclient.RequestThrottle_.fire();
}, module$contents$ee$apiclient_apiclient.REQUEST_THROTTLE_INTERVAL_MS_);
module$contents$ee$apiclient_apiclient.apiBaseUrl_ = null;
module$contents$ee$apiclient_apiclient.tileBaseUrl_ = null;
module$contents$ee$apiclient_apiclient.xsrfToken_ = null;
module$contents$ee$apiclient_apiclient.appIdToken_ = null;
module$contents$ee$apiclient_apiclient.paramAugmenter_ = goog.functions.identity;
module$contents$ee$apiclient_apiclient.authToken_ = null;
module$contents$ee$apiclient_apiclient.authTokenExpiration_ = null;
module$contents$ee$apiclient_apiclient.authClientId_ = null;
module$contents$ee$apiclient_apiclient.authScopes_ = [];
module$contents$ee$apiclient_apiclient.authTokenRefresher_ = null;
module$contents$ee$apiclient_apiclient.AUTH_SCOPE_ = "https://www.googleapis.com/auth/earthengine";
module$contents$ee$apiclient_apiclient.READ_ONLY_AUTH_SCOPE_ = "https://www.googleapis.com/auth/earthengine.readonly";
module$contents$ee$apiclient_apiclient.CLOUD_PLATFORM_SCOPE_ = "https://www.googleapis.com/auth/cloud-platform";
module$contents$ee$apiclient_apiclient.DEFAULT_AUTH_SCOPES_ = [module$contents$ee$apiclient_apiclient.AUTH_SCOPE_, module$contents$ee$apiclient_apiclient.CLOUD_PLATFORM_SCOPE_];
module$contents$ee$apiclient_apiclient.STORAGE_SCOPE_ = "https://www.googleapis.com/auth/devstorage.read_write";
module$contents$ee$apiclient_apiclient.cloudApiKey_ = null;
module$contents$ee$apiclient_apiclient.initialized_ = !1;
module$contents$ee$apiclient_apiclient.deadlineMs_ = 0;
module$contents$ee$apiclient_apiclient.profileHook_ = null;
module$contents$ee$apiclient_apiclient.BASE_RETRY_WAIT_ = 1E3;
module$contents$ee$apiclient_apiclient.MAX_RETRY_WAIT_ = 12E4;
module$contents$ee$apiclient_apiclient.MAX_ASYNC_RETRIES_ = 10;
module$contents$ee$apiclient_apiclient.MAX_SYNC_RETRIES_ = 5;
module$contents$ee$apiclient_apiclient.APP_ID_TOKEN_HEADER_ = "X-Earth-Engine-App-ID-Token";
module$contents$ee$apiclient_apiclient.PROFILE_HEADER = "X-Earth-Engine-Computation-Profile";
module$contents$ee$apiclient_apiclient.PROFILE_REQUEST_HEADER = "X-Earth-Engine-Computation-Profiling";
module$contents$ee$apiclient_apiclient.USER_PROJECT_OVERRIDE_HEADER_ = "X-Goog-User-Project";
module$contents$ee$apiclient_apiclient.API_CLIENT_VERSION_HEADER = "x-goog-api-client";
module$contents$ee$apiclient_apiclient.DEFAULT_API_BASE_URL_ = "https://earthengine.googleapis.com/api";
module$contents$ee$apiclient_apiclient.DEFAULT_TILE_BASE_URL_ = "https://earthengine.googleapis.com";
module$contents$ee$apiclient_apiclient.AuthArgs = function() {
};
var module$contents$ee$apiclient_TokenClient = function() {
};
module$contents$ee$apiclient_apiclient.AuthResponse = function() {
};
ee.apiclient.Call = module$contents$ee$apiclient_Call;
ee.apiclient.BatchCall = module$contents$ee$apiclient_BatchCall;
ee.apiclient.setApiKey = module$contents$ee$apiclient_apiclient.setApiKey;
ee.apiclient.getApiKey = module$contents$ee$apiclient_apiclient.getApiKey;
ee.apiclient.setProject = module$contents$ee$apiclient_apiclient.setProject;
ee.apiclient.getProject = module$contents$ee$apiclient_apiclient.getProject;
ee.apiclient.DEFAULT_PROJECT = module$contents$ee$apiclient_apiclient.DEFAULT_PROJECT_;
ee.apiclient.PROFILE_HEADER = module$contents$ee$apiclient_apiclient.PROFILE_HEADER;
ee.apiclient.PROFILE_REQUEST_HEADER = module$contents$ee$apiclient_apiclient.PROFILE_REQUEST_HEADER;
ee.apiclient.API_CLIENT_VERSION_HEADER = module$contents$ee$apiclient_apiclient.API_CLIENT_VERSION_HEADER;
ee.apiclient.send = module$contents$ee$apiclient_apiclient.send;
ee.apiclient.AUTH_SCOPE = module$contents$ee$apiclient_apiclient.AUTH_SCOPE_;
ee.apiclient.READ_ONLY_AUTH_SCOPE = module$contents$ee$apiclient_apiclient.READ_ONLY_AUTH_SCOPE_;
ee.apiclient.CLOUD_PLATFORM_SCOPE = module$contents$ee$apiclient_apiclient.CLOUD_PLATFORM_SCOPE_;
ee.apiclient.STORAGE_SCOPE = module$contents$ee$apiclient_apiclient.STORAGE_SCOPE_;
ee.apiclient.DEFAULT_AUTH_SCOPES = module$contents$ee$apiclient_apiclient.DEFAULT_AUTH_SCOPES_;
ee.apiclient.makeRequest = module$contents$ee$apiclient_apiclient.makeRequest_;
ee.apiclient.reset = module$contents$ee$apiclient_apiclient.reset;
ee.apiclient.initialize = module$contents$ee$apiclient_apiclient.initialize;
ee.apiclient.setDeadline = module$contents$ee$apiclient_apiclient.setDeadline;
ee.apiclient.isInitialized = module$contents$ee$apiclient_apiclient.isInitialized;
ee.apiclient.ensureAuthLibLoaded = module$contents$ee$apiclient_apiclient.ensureAuthLibLoaded_;
ee.apiclient.handleAuthResult = module$contents$ee$apiclient_apiclient.handleAuthResult_;
ee.apiclient.refreshAuthToken = module$contents$ee$apiclient_apiclient.refreshAuthToken;
ee.apiclient.setAuthClient = module$contents$ee$apiclient_apiclient.setAuthClient;
ee.apiclient.getAuthScopes = module$contents$ee$apiclient_apiclient.getAuthScopes;
ee.apiclient.getAuthClientId = module$contents$ee$apiclient_apiclient.getAuthClientId;
ee.apiclient.getAuthToken = module$contents$ee$apiclient_apiclient.getAuthToken;
ee.apiclient.setAuthToken = module$contents$ee$apiclient_apiclient.setAuthToken;
ee.apiclient.clearAuthToken = module$contents$ee$apiclient_apiclient.clearAuthToken;
ee.apiclient.setAuthTokenRefresher = module$contents$ee$apiclient_apiclient.setAuthTokenRefresher;
ee.apiclient.setAppIdToken = module$contents$ee$apiclient_apiclient.setAppIdToken;
ee.apiclient.mergeAuthScopes = module$contents$ee$apiclient_apiclient.mergeAuthScopes_;
ee.apiclient.setupMockSend = module$contents$ee$apiclient_apiclient.setupMockSend;
ee.apiclient.setParamAugmenter = module$contents$ee$apiclient_apiclient.setParamAugmenter;
ee.apiclient.withProfiling = module$contents$ee$apiclient_apiclient.withProfiling;
ee.apiclient.getApiBaseUrl = module$contents$ee$apiclient_apiclient.getApiBaseUrl;
ee.apiclient.getTileBaseUrl = module$contents$ee$apiclient_apiclient.getTileBaseUrl;
ee.apiclient.AuthArgs = module$contents$ee$apiclient_apiclient.AuthArgs;
ee.apiclient.AuthResponse = module$contents$ee$apiclient_apiclient.AuthResponse;
ee.apiclient.RequestThrottle = module$contents$ee$apiclient_apiclient.RequestThrottle_;
ee.apiclient.calculateRetryWait = module$contents$ee$apiclient_apiclient.calculateRetryWait_;
ee.apiclient.MAX_ASYNC_RETRIES = module$contents$ee$apiclient_apiclient.MAX_ASYNC_RETRIES_;
ee.apiclient.REQUEST_THROTTLE_INTERVAL_MS = module$contents$ee$apiclient_apiclient.REQUEST_THROTTLE_INTERVAL_MS_;
ee.apiclient.isAuthTokenRefreshingEnabled = module$contents$ee$apiclient_apiclient.isAuthTokenRefreshingEnabled_;
goog.exportSymbol("ee.api.ListAssetsResponse", module$exports$eeapiclient$ee_api_client.ListAssetsResponse);
goog.exportSymbol("ee.api.EarthEngineAsset", module$exports$eeapiclient$ee_api_client.EarthEngineAsset);
goog.exportSymbol("ee.api.Operation", module$exports$eeapiclient$ee_api_client.Operation);
goog.exportSymbol("ee.api.ListFeaturesResponse", module$exports$eeapiclient$ee_api_client.ListFeaturesResponse);
goog.exportSymbol("ee.api.FeatureViewLocation", module$exports$eeapiclient$ee_api_client.FeatureViewLocation);
ee.Encodable = function() {
};
ee.Encodable.prototype.getSourceFrame = function() {
  return null;
};
ee.Encodable.SourceFrame = function() {
};
goog.exportSymbol("ee.Encodable.SourceFrame", ee.Encodable.SourceFrame);
ee.rpc_node = {};
ee.rpc_node.constant = function(obj) {
  if (void 0 === obj || null === obj) {
    obj = module$exports$eeapiclient$domain_object.NULL_VALUE;
  }
  return new module$exports$eeapiclient$ee_api_client.ValueNode({constantValue:obj});
};
ee.rpc_node.reference = function(ref) {
  return new module$exports$eeapiclient$ee_api_client.ValueNode({valueReference:ref});
};
ee.rpc_node.array = function(values) {
  return new module$exports$eeapiclient$ee_api_client.ValueNode({arrayValue:new module$exports$eeapiclient$ee_api_client.ArrayValue({values:values})});
};
ee.rpc_node.dictionary = function(values) {
  return new module$exports$eeapiclient$ee_api_client.ValueNode({dictionaryValue:new module$exports$eeapiclient$ee_api_client.DictionaryValue({values:values})});
};
ee.rpc_node.functionByName = function(name, args) {
  return new module$exports$eeapiclient$ee_api_client.ValueNode({functionInvocationValue:new module$exports$eeapiclient$ee_api_client.FunctionInvocation({functionName:name, arguments:args})});
};
ee.rpc_node.functionByReference = function(ref, args) {
  return new module$exports$eeapiclient$ee_api_client.ValueNode({functionInvocationValue:new module$exports$eeapiclient$ee_api_client.FunctionInvocation({functionReference:ref, arguments:args})});
};
ee.rpc_node.functionDefinition = function(argumentNames, body) {
  return new module$exports$eeapiclient$ee_api_client.ValueNode({functionDefinitionValue:new module$exports$eeapiclient$ee_api_client.FunctionDefinition({argumentNames:argumentNames, body:body})});
};
ee.rpc_node.argumentReference = function(ref) {
  return new module$exports$eeapiclient$ee_api_client.ValueNode({argumentReference:ref});
};
ee.rpc_convert = {};
ee.rpc_convert.fileFormat = function(format) {
  if (!format) {
    return "AUTO_JPEG_PNG";
  }
  var upper = format.toUpperCase();
  switch(upper) {
    case "JPG":
      return "JPEG";
    case "AUTO":
      return "AUTO_JPEG_PNG";
    case "TIF":
    case "TIFF":
    case "GEOTIF":
    case "GEOTIFF":
      return "GEO_TIFF";
    case "TF_RECORD":
    case "TFRECORD":
      return "TF_RECORD_IMAGE";
    case "NUMPY":
      return "NPY";
    case "ZIPPED_TIF":
    case "ZIPPED_TIFF":
    case "ZIPPED_GEOTIF":
    case "ZIPPED_GEOTIFF":
      return "ZIPPED_GEO_TIFF";
    case "ZIPPED_TIF_PER_BAND":
    case "ZIPPED_TIFF_PER_BAND":
    case "ZIPPED_GEOTIF_PER_BAND":
    case "ZIPPED_GEOTIFF_PER_BAND":
      return "ZIPPED_GEO_TIFF_PER_BAND";
    default:
      return upper;
  }
};
ee.rpc_convert.tableFileFormat = function(format) {
  if (!format) {
    return "CSV";
  }
  var upper = format.toUpperCase();
  switch(upper) {
    case "TF_RECORD":
    case "TFRECORD":
      return "TF_RECORD_TABLE";
    case "JSON":
    case "GEOJSON":
      return "GEO_JSON";
    default:
      return upper;
  }
};
ee.rpc_convert.orientation = function(orientation) {
  if (!orientation) {
    return "VERTICAL";
  }
  var upper = orientation.toUpperCase();
  if ("HORIZONTAL" !== upper && "VERTICAL" !== upper) {
    throw Error('Orientation must be "horizontal" or "vertical"');
  }
  return upper;
};
ee.rpc_convert.bandList = function(bands) {
  if (!bands) {
    return [];
  }
  if ("string" === typeof bands) {
    return bands.split(",");
  }
  if (Array.isArray(bands)) {
    return bands;
  }
  throw Error("Invalid band list " + bands);
};
ee.rpc_convert.visualizationOptions = function(params) {
  var result = new module$exports$eeapiclient$ee_api_client.VisualizationOptions(), hasResult = !1;
  if ("palette" in params) {
    var pal = params.palette;
    result.paletteColors = "string" === typeof pal ? pal.split(",") : pal;
    hasResult = !0;
  }
  var ranges = [];
  if ("gain" in params || "bias" in params) {
    if ("min" in params || "max" in params) {
      throw Error("Gain and bias can't be specified with min and max");
    }
    var valueRange = result.paletteColors ? result.paletteColors.length - 1 : 255;
    ranges = ee.rpc_convert.pairedValues(params, "bias", "gain").map(function(pair) {
      var min = -pair.bias / pair.gain;
      return {min:min, max:valueRange / pair.gain + min};
    });
  } else if ("min" in params || "max" in params) {
    ranges = ee.rpc_convert.pairedValues(params, "min", "max");
  }
  0 !== ranges.length && (result.ranges = ranges.map(function(range) {
    return new module$exports$eeapiclient$ee_api_client.DoubleRange(range);
  }), hasResult = !0);
  var gammas = ee.rpc_convert.csvToNumbers(params.gamma);
  if (1 < gammas.length) {
    throw Error("Only one gamma value is supported");
  }
  1 === gammas.length && (result.gamma = gammas[0], hasResult = !0);
  return hasResult ? result : null;
};
ee.rpc_convert.csvToNumbers = function(csv) {
  return csv ? csv.split(",").map(Number) : [];
};
ee.rpc_convert.pairedValues = function(obj, a, b) {
  var aValues = ee.rpc_convert.csvToNumbers(obj[a]), bValues = ee.rpc_convert.csvToNumbers(obj[b]);
  if (0 === aValues.length) {
    return bValues.map(function(value) {
      var $jscomp$compprop14 = {};
      return $jscomp$compprop14[a] = 0, $jscomp$compprop14[b] = value, $jscomp$compprop14;
    });
  }
  if (0 === bValues.length) {
    return aValues.map(function(value) {
      var $jscomp$compprop15 = {};
      return $jscomp$compprop15[a] = value, $jscomp$compprop15[b] = 1, $jscomp$compprop15;
    });
  }
  if (aValues.length !== bValues.length) {
    throw Error("Length of " + a + " and " + b + " must match.");
  }
  return aValues.map(function(value, index) {
    var $jscomp$compprop16 = {};
    return $jscomp$compprop16[a] = value, $jscomp$compprop16[b] = bValues[index], $jscomp$compprop16;
  });
};
ee.rpc_convert.algorithms = function(result) {
  for (var convertArgument = function(argument) {
    var internalArgument = {};
    internalArgument.description = argument.description || "";
    internalArgument.type = argument.type || "";
    null != argument.argumentName && (internalArgument.name = argument.argumentName);
    void 0 !== argument.defaultValue && (internalArgument["default"] = argument.defaultValue);
    null != argument.optional && (internalArgument.optional = argument.optional);
    return internalArgument;
  }, convertAlgorithm = function(algorithm) {
    var internalAlgorithm = {};
    internalAlgorithm.args = (algorithm.arguments || []).map(convertArgument);
    internalAlgorithm.description = algorithm.description || "";
    internalAlgorithm.returns = algorithm.returnType || "";
    null != algorithm.hidden && (internalAlgorithm.hidden = algorithm.hidden);
    algorithm.preview && (internalAlgorithm.preview = algorithm.preview);
    algorithm.deprecated && (internalAlgorithm.deprecated = algorithm.deprecationReason);
    algorithm.sourceCodeUri && (internalAlgorithm.sourceCodeUri = algorithm.sourceCodeUri);
    return internalAlgorithm;
  }, internalAlgorithms = {}, $jscomp$iter$43 = $jscomp.makeIterator(result.algorithms || []), $jscomp$key$m29782521$48$algorithm = $jscomp$iter$43.next(); !$jscomp$key$m29782521$48$algorithm.done; $jscomp$key$m29782521$48$algorithm = $jscomp$iter$43.next()) {
    var algorithm = $jscomp$key$m29782521$48$algorithm.value, name = algorithm.name.replace(/^algorithms\//, "");
    internalAlgorithms[name] = convertAlgorithm(algorithm);
  }
  return internalAlgorithms;
};
ee.rpc_convert.DEFAULT_PROJECT = "earthengine-legacy";
ee.rpc_convert.PUBLIC_PROJECT = "earthengine-public";
ee.rpc_convert.PROJECT_ID_RE = /^projects\/((?:\w+(?:[\w\-]+\.[\w\-]+)*?\.\w+:)?[a-z][a-z0-9\-]{4,28}[a-z0-9])\/.+/;
ee.rpc_convert.CLOUD_ASSET_ID_RE = /^projects\/((?:\w+(?:[\w\-]+\.[\w\-]+)*?\.\w+:)?[a-z][a-z0-9\-]{4,28}[a-z0-9])\/assets\/(.*)$/;
ee.rpc_convert.CLOUD_ASSET_ROOT_RE = /^projects\/((?:\w+(?:[\w\-]+\.[\w\-]+)*?\.\w+:)?[a-z][a-z0-9\-]{4,28}[a-z0-9])\/assets\/?$/;
ee.rpc_convert.projectIdFromPath = function(path) {
  var matches = ee.rpc_convert.PROJECT_ID_RE.exec(path);
  return matches ? matches[1] : ee.rpc_convert.DEFAULT_PROJECT;
};
ee.rpc_convert.projectParentFromPath = function(path) {
  return "projects/" + ee.rpc_convert.projectIdFromPath(path);
};
ee.rpc_convert.assetIdToAssetName = function(param) {
  return ee.rpc_convert.CLOUD_ASSET_ID_RE.exec(param) ? param : /^(users|projects)\/.*/.exec(param) ? "projects/" + ee.rpc_convert.DEFAULT_PROJECT + "/assets/" + param : "projects/" + ee.rpc_convert.PUBLIC_PROJECT + "/assets/" + param;
};
ee.rpc_convert.assetNameToAssetId = function(name) {
  var parts = name.split("/"), isLegacyProject = function(id) {
    return [ee.rpc_convert.DEFAULT_PROJECT, ee.rpc_convert.PUBLIC_PROJECT].includes(id);
  };
  return "projects" === parts[0] && "assets" === parts[2] && isLegacyProject(parts[1]) ? parts.slice(3).join("/") : name;
};
ee.rpc_convert.assetTypeForCreate = function(param) {
  switch(param) {
    case "ImageCollection":
      return "IMAGE_COLLECTION";
    case "Folder":
      return "FOLDER";
    default:
      return param;
  }
};
ee.rpc_convert.listAssetsToGetList = function(result) {
  return (result.assets || []).map(ee.rpc_convert.assetToLegacyResult);
};
ee.rpc_convert.assetTypeToLegacyAssetType = function(type) {
  switch(type) {
    case "ALGORITHM":
      return "Algorithm";
    case "FOLDER":
      return "Folder";
    case "IMAGE":
      return "Image";
    case "IMAGE_COLLECTION":
      return "ImageCollection";
    case "TABLE":
      return "Table";
    case "CLASSIFIER":
      return "Classifier";
    case "FEATURE_VIEW":
      return "FeatureView";
    default:
      return "Unknown";
  }
};
ee.rpc_convert.legacyAssetTypeToAssetType = function(type) {
  switch(type) {
    case "Algorithm":
      return "ALGORITHM";
    case "Folder":
      return "FOLDER";
    case "Image":
      return "IMAGE";
    case "ImageCollection":
      return "IMAGE_COLLECTION";
    case "Table":
      return "TABLE";
    default:
      return "UNKNOWN";
  }
};
ee.rpc_convert.assetToLegacyResult = function(result) {
  var asset = ee.rpc_convert.makeLegacyAsset_(ee.rpc_convert.assetTypeToLegacyAssetType(result.type), result.name), properties = Object.assign({}, result.properties || {});
  result.sizeBytes && (properties["system:asset_size"] = Number(result.sizeBytes));
  result.startTime && (properties["system:time_start"] = Date.parse(result.startTime));
  result.endTime && (properties["system:time_end"] = Date.parse(result.endTime));
  result.geometry && (properties["system:footprint"] = result.geometry);
  "string" === typeof result.title ? properties["system:title"] = result.title : "string" === typeof properties.title && (properties["system:title"] = properties.title);
  "string" === typeof result.description ? properties["system:description"] = result.description : "string" === typeof properties.description && (properties["system:description"] = properties.description);
  result.updateTime && (asset.version = 1E3 * Date.parse(result.updateTime));
  asset.properties = properties;
  result.bands && (asset.bands = result.bands.map(function(band) {
    var legacyBand = {id:band.id, crs:band.grid.crsCode, dimensions:void 0, crs_transform:void 0};
    if (band.grid) {
      if (null != band.grid.affineTransform) {
        var affine = band.grid.affineTransform;
        legacyBand.crs_transform = [affine.scaleX || 0, affine.shearX || 0, affine.translateX || 0, affine.shearY || 0, affine.scaleY || 0, affine.translateY || 0];
      }
      null != band.grid.dimensions && (legacyBand.dimensions = [band.grid.dimensions.width, band.grid.dimensions.height]);
    }
    if (band.dataType) {
      var dataType = {type:"PixelType"};
      dataType.precision = (band.dataType.precision || "").toLowerCase();
      band.dataType.range && (dataType.min = band.dataType.range.min || 0, dataType.max = band.dataType.range.max);
      legacyBand.data_type = dataType;
    }
    return legacyBand;
  }));
  result.featureViewAssetLocation && (asset.mapLocation = result.featureViewAssetLocation);
  result.featureCount && (asset.featureCount = result.featureCount);
  return asset;
};
ee.rpc_convert.legacyPropertiesToAssetUpdate = function(legacyProperties) {
  var asset = new module$exports$eeapiclient$ee_api_client.EarthEngineAsset(), toTimestamp = function(msec) {
    return (new Date(Number(msec))).toISOString();
  }, asNull = function(value) {
    return null === value ? module$exports$eeapiclient$domain_object.NULL_VALUE : void 0;
  }, properties = Object.assign({}, legacyProperties), value, extractValue = function(key) {
    value = properties[key];
    delete properties[key];
    return value;
  };
  void 0 !== extractValue("system:asset_size") && (asset.sizeBytes = asNull(value) || String(value));
  void 0 !== extractValue("system:time_start") && (asset.startTime = asNull(value) || toTimestamp(value));
  void 0 !== extractValue("system:time_end") && (asset.endTime = asNull(value) || toTimestamp(value));
  void 0 !== extractValue("system:footprint") && (asset.geometry = asNull(value) || value);
  extractValue("system:title");
  "string" !== typeof value && null !== value || null != properties.title || (properties.title = asNull(value) || value);
  extractValue("system:description");
  "string" !== typeof value && null !== value || null != properties.description || (properties.description = asNull(value) || value);
  Object.entries(properties).forEach(function($jscomp$destructuring$var48) {
    var $jscomp$destructuring$var49 = $jscomp.makeIterator($jscomp$destructuring$var48), key = $jscomp$destructuring$var49.next().value, value = $jscomp$destructuring$var49.next().value;
    properties[key] = asNull(value) || value;
  });
  asset.properties = properties;
  return asset;
};
ee.rpc_convert.makeLegacyAsset_ = function(type, name) {
  var legacyAsset = {};
  legacyAsset.type = type;
  null != name && (legacyAsset.id = ee.rpc_convert.assetNameToAssetId(name));
  return legacyAsset;
};
ee.rpc_convert.getListToListAssets = function(param) {
  var assetsRequest = {}, toTimestamp = function(msec) {
    return (new Date(msec)).toISOString();
  };
  param.num && (assetsRequest.pageSize = param.num);
  param.starttime && (assetsRequest.startTime = toTimestamp(param.starttime));
  param.endtime && (assetsRequest.endTime = toTimestamp(param.endtime));
  param.bbox && (assetsRequest.region = ee.rpc_convert.boundingBoxToGeoJson(param.bbox));
  param.region && (assetsRequest.region = param.region);
  param.bbox && param.region && console.warn("Multiple request parameters converted to region");
  for (var allKeys = "id num starttime endtime bbox region".split(" "), $jscomp$iter$44 = $jscomp.makeIterator(Object.keys(param).filter(function(k) {
    return !allKeys.includes(k);
  })), $jscomp$key$m29782521$49$key = $jscomp$iter$44.next(); !$jscomp$key$m29782521$49$key.done; $jscomp$key$m29782521$49$key = $jscomp$iter$44.next()) {
    console.warn("Unrecognized key " + $jscomp$key$m29782521$49$key.value + " ignored");
  }
  return ee.rpc_convert.processListImagesParams(assetsRequest);
};
ee.rpc_convert.boundingBoxToGeoJson = function(bbox) {
  return '{"type":"Polygon","coordinates":[[[' + [[0, 1], [2, 1], [2, 3], [0, 3], [0, 1]].map(function(i) {
    return bbox[i[0]] + "," + bbox[i[1]];
  }).join("],[") + "]]]}";
};
ee.rpc_convert.iamPolicyToAcl = function(result) {
  var bindingMap = {};
  (result.bindings || []).forEach(function(binding) {
    bindingMap[binding.role] = binding.members;
  });
  var groups = new Set(), toAcl = function(member) {
    var email = member.replace(/^domain:|^group:|^serviceAccount:|^user:/, "");
    member.startsWith("group:") && groups.add(email);
    return email;
  }, readersWithAll = bindingMap["roles/viewer"] || [], readers = readersWithAll.filter(function(reader) {
    return "allUsers" !== reader;
  }), internalAcl = {owners:(bindingMap["roles/owner"] || []).map(toAcl), writers:(bindingMap["roles/editor"] || []).map(toAcl), readers:readers.map(toAcl)};
  0 < groups.size && (internalAcl.groups = groups);
  readersWithAll.length != readers.length && (internalAcl.all_users_can_read = !0);
  return internalAcl;
};
ee.rpc_convert.aclToIamPolicy = function(acls) {
  var hasPrefix = function(email) {
    return email.includes(":");
  }, isDomain = function(email) {
    return !email.includes("@");
  }, isGroup = function(email) {
    return acls.groups && acls.groups.has(email);
  }, isServiceAccount = function(email) {
    return email.match(/[@|\.]gserviceaccount\.com$/);
  }, asMembers = function(aclName) {
    return (acls[aclName] || []).map(function(email) {
      if (hasPrefix(email)) {
        return email;
      }
      var prefix = "user:";
      isDomain(email) ? prefix = "domain:" : isGroup(email) ? prefix = "group:" : isServiceAccount(email) && (prefix = "serviceAccount:");
      return prefix + email;
    });
  }, all = acls.all_users_can_read ? ["allUsers"] : [], bindings = [{role:"roles/owner", members:asMembers("owners")}, {role:"roles/viewer", members:asMembers("readers").concat(all)}, {role:"roles/editor", members:asMembers("writers")}].map(function(params) {
    return new module$exports$eeapiclient$ee_api_client.Binding(params);
  });
  return new module$exports$eeapiclient$ee_api_client.Policy({bindings:bindings.filter(function(binding) {
    return binding.members.length;
  }), etag:null});
};
ee.rpc_convert.taskIdToOperationName = function(operationNameOrTaskId) {
  return "projects/" + ee.rpc_convert.operationNameToProject(operationNameOrTaskId) + "/operations/" + ee.rpc_convert.operationNameToTaskId(operationNameOrTaskId);
};
ee.rpc_convert.operationNameToTaskId = function(result) {
  var found = /^.*operations\/(.*)$/.exec(result);
  return found ? found[1] : result;
};
ee.rpc_convert.operationNameToProject = function(operationNameOrTaskId) {
  var found = /^projects\/(.+)\/operations\/.+$/.exec(operationNameOrTaskId);
  return found ? found[1] : ee.rpc_convert.DEFAULT_PROJECT;
};
ee.rpc_convert.operationToTask = function(result) {
  var internalTask = {}, assignTimestamp = function(field, timestamp) {
    null != timestamp && (internalTask[field] = Date.parse(timestamp));
  }, convertState = function(state) {
    switch(state) {
      case "PENDING":
        return "READY";
      case "RUNNING":
        return "RUNNING";
      case "CANCELLING":
        return "CANCEL_REQUESTED";
      case "SUCCEEDED":
        return "COMPLETED";
      case "CANCELLED":
        return "CANCELLED";
      case "FAILED":
        return "FAILED";
      default:
        return "UNKNOWN";
    }
  }, metadata = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.OperationMetadata, result.metadata || {});
  null != metadata.description && (internalTask.description = metadata.description);
  null != metadata.state && (internalTask.state = convertState(metadata.state));
  assignTimestamp("creation_timestamp_ms", metadata.createTime);
  assignTimestamp("update_timestamp_ms", metadata.updateTime);
  assignTimestamp("start_timestamp_ms", metadata.startTime);
  internalTask.attempt = metadata.attempt;
  result.done && null != result.error && (internalTask.error_message = result.error.message);
  null != result.name && (internalTask.id = ee.rpc_convert.operationNameToTaskId(result.name), internalTask.name = result.name);
  internalTask.task_type = metadata.type || "UNKNOWN";
  internalTask.output_url = metadata.destinationUris;
  internalTask.source_url = metadata.scriptUri;
  null != metadata.batchEecuUsageSeconds && (internalTask.batch_eecu_usage_seconds = metadata.batchEecuUsageSeconds);
  return internalTask;
};
ee.rpc_convert.operationToProcessingResponse = function(operation) {
  var result = {started:"OK"};
  operation.name && (result.taskId = ee.rpc_convert.operationNameToTaskId(operation.name), result.name = operation.name);
  operation.error && (result.note = operation.error.message);
  return result;
};
ee.rpc_convert.sourcePathsToUris = function(source) {
  return source.primaryPath ? [source.primaryPath].concat($jscomp.arrayFromIterable(source.additionalPaths || [])) : null;
};
ee.rpc_convert.toImageManifest = function(params) {
  var convertImageSource = function(source) {
    var apiSource = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.ImageSource, source);
    apiSource.uris = ee.rpc_convert.sourcePathsToUris(source);
    return apiSource;
  }, manifest = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.ImageManifest, params);
  manifest.name = ee.rpc_convert.assetIdToAssetName(params.id);
  manifest.tilesets = (params.tilesets || []).map(function(tileset) {
    var apiTileset = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.Tileset, tileset);
    apiTileset.sources = (tileset.sources || []).map(convertImageSource);
    return apiTileset;
  });
  manifest.bands = (params.bands || []).map(function(band) {
    var apiBand = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.TilesetBand, band);
    apiBand.missingData = ee.rpc_convert.toOnePlatformMissingData(band.missingData);
    return apiBand;
  });
  manifest.missingData = ee.rpc_convert.toOnePlatformMissingData(params.missingData);
  manifest.maskBands = module$contents$goog$array_flatten((params.tilesets || []).map(ee.rpc_convert.toOnePlatformMaskBands));
  manifest.pyramidingPolicy = params.pyramidingPolicy || null;
  if (params.properties) {
    var properties = Object.assign({}, params.properties), toTimestamp = function(msec) {
      return (new Date(Number(msec))).toISOString();
    }, value, extractValue = function(key) {
      value = properties[key];
      delete properties[key];
      return value;
    };
    extractValue("system:time_start") && (manifest.startTime = toTimestamp(value));
    extractValue("system:time_end") && (manifest.endTime = toTimestamp(value));
    manifest.properties = properties;
  }
  return manifest;
};
ee.rpc_convert.toOnePlatformMaskBands = function(tileset) {
  var maskBands = [];
  if (!Array.isArray(tileset.fileBands)) {
    return maskBands;
  }
  var convertMaskConfig = function(maskConfig) {
    var bandIds = [];
    null != maskConfig && Array.isArray(maskConfig.bandId) && (bandIds = maskConfig.bandId.map(function(bandId) {
      return bandId || "";
    }));
    return new module$exports$eeapiclient$ee_api_client.TilesetMaskBand({tilesetId:tileset.id || "", bandIds:bandIds});
  };
  tileset.fileBands.forEach(function(fileBand) {
    fileBand.maskForAllBands ? maskBands.push(convertMaskConfig(null)) : null != fileBand.maskForBands && maskBands.push(convertMaskConfig(fileBand.maskForBands));
  });
  return maskBands;
};
ee.rpc_convert.toTableManifest = function(params) {
  var manifest = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.TableManifest, params);
  manifest.name = ee.rpc_convert.assetIdToAssetName(params.id);
  manifest.sources = (params.sources || []).map(function(source) {
    var apiSource = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.TableSource, source);
    apiSource.uris = ee.rpc_convert.sourcePathsToUris(source);
    source.maxError && (apiSource.maxErrorMeters = source.maxError);
    return apiSource;
  });
  if (params.properties) {
    var properties = Object.assign({}, params.properties), toTimestamp = function(msec) {
      return (new Date(Number(msec))).toISOString();
    }, value, extractValue = function(key) {
      value = properties[key];
      delete properties[key];
      return value;
    };
    extractValue("system:time_start") && (manifest.startTime = toTimestamp(value));
    extractValue("system:time_end") && (manifest.endTime = toTimestamp(value));
    manifest.properties = properties;
  }
  return manifest;
};
ee.rpc_convert.toOnePlatformMissingData = function(params) {
  if (null == params) {
    return null;
  }
  var missingData = new module$exports$eeapiclient$ee_api_client.MissingData({values:[]});
  null != params.value && "number" === typeof params.value && missingData.values.push(params.value);
  Array.isArray(params.values) && params.values.map(function(value) {
    "number" === typeof value && missingData.values.push(value);
  });
  return module$contents$goog$array_isEmpty(missingData.values) ? null : missingData;
};
ee.rpc_convert.folderQuotaToAssetQuotaDetails = function(quota) {
  var toNumber = function(field) {
    return Number(field || 0);
  };
  return {asset_count:{usage:toNumber(quota.assetCount), limit:toNumber(quota.maxAssets)}, asset_size:{usage:toNumber(quota.sizeBytes), limit:toNumber(quota.maxSizeBytes)}};
};
ee.rpc_convert.parseFilterParamsFromListImages_ = function(params) {
  var queryStrings = [], toISOString = function(dateStr) {
    return (new Date(dateStr)).toISOString();
  };
  "startTime" in params && (queryStrings.push('startTime >= "' + toISOString(params.startTime) + '"'), delete params.startTime);
  "endTime" in params && (queryStrings.push('endTime < "' + toISOString(params.endTime) + '"'), delete params.endTime);
  if ("region" in params) {
    var region = params.region;
    if ("object" === typeof region) {
      try {
        region = JSON.stringify(region);
      } catch (x) {
        throw Error('Filter parameter "region" must be a GeoJSON or WKT string.');
      }
    } else if ("string" !== typeof region) {
      throw Error('Filter parameter "region" must be a GeoJSON or WKT string.');
    }
    region = region.replace(/"/g, "'");
    queryStrings.push('intersects("' + region + '")');
    delete params.region;
  }
  if ("properties" in params) {
    if (!Array.isArray(params.properties) && params.properties.some(function(property) {
      return "string" !== typeof property;
    })) {
      throw Error('Filter parameter "properties" must be an array of strings');
    }
    for (var $jscomp$iter$45 = $jscomp.makeIterator(params.properties), $jscomp$key$m29782521$50$propertyQuery = $jscomp$iter$45.next(); !$jscomp$key$m29782521$50$propertyQuery.done; $jscomp$key$m29782521$50$propertyQuery = $jscomp$iter$45.next()) {
      queryStrings.push($jscomp$key$m29782521$50$propertyQuery.value.trim().replace(/^(properties\.)?/, "properties."));
    }
    delete params.properties;
  }
  return queryStrings.join(" AND ");
};
ee.rpc_convert.processListImagesParams = function(params) {
  params = Object.assign({}, params);
  var extraFilters = ee.rpc_convert.parseFilterParamsFromListImages_(params);
  extraFilters && (params.filter = params.filter ? params.filter + " AND " + extraFilters : extraFilters);
  return params;
};
goog.crypt = {};
goog.crypt.Hash = function() {
  this.blockSize = -1;
};
goog.crypt.Md5 = function() {
  goog.crypt.Hash.call(this);
  this.blockSize = 64;
  this.chain_ = Array(4);
  this.block_ = Array(this.blockSize);
  this.totalLength_ = this.blockLength_ = 0;
  this.reset();
};
goog.inherits(goog.crypt.Md5, goog.crypt.Hash);
goog.crypt.Md5.prototype.reset = function() {
  this.chain_[0] = 1732584193;
  this.chain_[1] = 4023233417;
  this.chain_[2] = 2562383102;
  this.chain_[3] = 271733878;
  this.totalLength_ = this.blockLength_ = 0;
};
goog.crypt.Md5.prototype.compress_ = function(buf, opt_offset) {
  opt_offset || (opt_offset = 0);
  var X = Array(16);
  if ("string" === typeof buf) {
    for (var i = 0; 16 > i; ++i) {
      X[i] = buf.charCodeAt(opt_offset++) | buf.charCodeAt(opt_offset++) << 8 | buf.charCodeAt(opt_offset++) << 16 | buf.charCodeAt(opt_offset++) << 24;
    }
  } else {
    for (i = 0; 16 > i; ++i) {
      X[i] = buf[opt_offset++] | buf[opt_offset++] << 8 | buf[opt_offset++] << 16 | buf[opt_offset++] << 24;
    }
  }
  var A = this.chain_[0], B = this.chain_[1], C = this.chain_[2], D = this.chain_[3], sum = 0;
  sum = A + (D ^ B & (C ^ D)) + X[0] + 3614090360 & 4294967295;
  A = B + (sum << 7 & 4294967295 | sum >>> 25);
  sum = D + (C ^ A & (B ^ C)) + X[1] + 3905402710 & 4294967295;
  D = A + (sum << 12 & 4294967295 | sum >>> 20);
  sum = C + (B ^ D & (A ^ B)) + X[2] + 606105819 & 4294967295;
  C = D + (sum << 17 & 4294967295 | sum >>> 15);
  sum = B + (A ^ C & (D ^ A)) + X[3] + 3250441966 & 4294967295;
  B = C + (sum << 22 & 4294967295 | sum >>> 10);
  sum = A + (D ^ B & (C ^ D)) + X[4] + 4118548399 & 4294967295;
  A = B + (sum << 7 & 4294967295 | sum >>> 25);
  sum = D + (C ^ A & (B ^ C)) + X[5] + 1200080426 & 4294967295;
  D = A + (sum << 12 & 4294967295 | sum >>> 20);
  sum = C + (B ^ D & (A ^ B)) + X[6] + 2821735955 & 4294967295;
  C = D + (sum << 17 & 4294967295 | sum >>> 15);
  sum = B + (A ^ C & (D ^ A)) + X[7] + 4249261313 & 4294967295;
  B = C + (sum << 22 & 4294967295 | sum >>> 10);
  sum = A + (D ^ B & (C ^ D)) + X[8] + 1770035416 & 4294967295;
  A = B + (sum << 7 & 4294967295 | sum >>> 25);
  sum = D + (C ^ A & (B ^ C)) + X[9] + 2336552879 & 4294967295;
  D = A + (sum << 12 & 4294967295 | sum >>> 20);
  sum = C + (B ^ D & (A ^ B)) + X[10] + 4294925233 & 4294967295;
  C = D + (sum << 17 & 4294967295 | sum >>> 15);
  sum = B + (A ^ C & (D ^ A)) + X[11] + 2304563134 & 4294967295;
  B = C + (sum << 22 & 4294967295 | sum >>> 10);
  sum = A + (D ^ B & (C ^ D)) + X[12] + 1804603682 & 4294967295;
  A = B + (sum << 7 & 4294967295 | sum >>> 25);
  sum = D + (C ^ A & (B ^ C)) + X[13] + 4254626195 & 4294967295;
  D = A + (sum << 12 & 4294967295 | sum >>> 20);
  sum = C + (B ^ D & (A ^ B)) + X[14] + 2792965006 & 4294967295;
  C = D + (sum << 17 & 4294967295 | sum >>> 15);
  sum = B + (A ^ C & (D ^ A)) + X[15] + 1236535329 & 4294967295;
  B = C + (sum << 22 & 4294967295 | sum >>> 10);
  sum = A + (C ^ D & (B ^ C)) + X[1] + 4129170786 & 4294967295;
  A = B + (sum << 5 & 4294967295 | sum >>> 27);
  sum = D + (B ^ C & (A ^ B)) + X[6] + 3225465664 & 4294967295;
  D = A + (sum << 9 & 4294967295 | sum >>> 23);
  sum = C + (A ^ B & (D ^ A)) + X[11] + 643717713 & 4294967295;
  C = D + (sum << 14 & 4294967295 | sum >>> 18);
  sum = B + (D ^ A & (C ^ D)) + X[0] + 3921069994 & 4294967295;
  B = C + (sum << 20 & 4294967295 | sum >>> 12);
  sum = A + (C ^ D & (B ^ C)) + X[5] + 3593408605 & 4294967295;
  A = B + (sum << 5 & 4294967295 | sum >>> 27);
  sum = D + (B ^ C & (A ^ B)) + X[10] + 38016083 & 4294967295;
  D = A + (sum << 9 & 4294967295 | sum >>> 23);
  sum = C + (A ^ B & (D ^ A)) + X[15] + 3634488961 & 4294967295;
  C = D + (sum << 14 & 4294967295 | sum >>> 18);
  sum = B + (D ^ A & (C ^ D)) + X[4] + 3889429448 & 4294967295;
  B = C + (sum << 20 & 4294967295 | sum >>> 12);
  sum = A + (C ^ D & (B ^ C)) + X[9] + 568446438 & 4294967295;
  A = B + (sum << 5 & 4294967295 | sum >>> 27);
  sum = D + (B ^ C & (A ^ B)) + X[14] + 3275163606 & 4294967295;
  D = A + (sum << 9 & 4294967295 | sum >>> 23);
  sum = C + (A ^ B & (D ^ A)) + X[3] + 4107603335 & 4294967295;
  C = D + (sum << 14 & 4294967295 | sum >>> 18);
  sum = B + (D ^ A & (C ^ D)) + X[8] + 1163531501 & 4294967295;
  B = C + (sum << 20 & 4294967295 | sum >>> 12);
  sum = A + (C ^ D & (B ^ C)) + X[13] + 2850285829 & 4294967295;
  A = B + (sum << 5 & 4294967295 | sum >>> 27);
  sum = D + (B ^ C & (A ^ B)) + X[2] + 4243563512 & 4294967295;
  D = A + (sum << 9 & 4294967295 | sum >>> 23);
  sum = C + (A ^ B & (D ^ A)) + X[7] + 1735328473 & 4294967295;
  C = D + (sum << 14 & 4294967295 | sum >>> 18);
  sum = B + (D ^ A & (C ^ D)) + X[12] + 2368359562 & 4294967295;
  B = C + (sum << 20 & 4294967295 | sum >>> 12);
  sum = A + (B ^ C ^ D) + X[5] + 4294588738 & 4294967295;
  A = B + (sum << 4 & 4294967295 | sum >>> 28);
  sum = D + (A ^ B ^ C) + X[8] + 2272392833 & 4294967295;
  D = A + (sum << 11 & 4294967295 | sum >>> 21);
  sum = C + (D ^ A ^ B) + X[11] + 1839030562 & 4294967295;
  C = D + (sum << 16 & 4294967295 | sum >>> 16);
  sum = B + (C ^ D ^ A) + X[14] + 4259657740 & 4294967295;
  B = C + (sum << 23 & 4294967295 | sum >>> 9);
  sum = A + (B ^ C ^ D) + X[1] + 2763975236 & 4294967295;
  A = B + (sum << 4 & 4294967295 | sum >>> 28);
  sum = D + (A ^ B ^ C) + X[4] + 1272893353 & 4294967295;
  D = A + (sum << 11 & 4294967295 | sum >>> 21);
  sum = C + (D ^ A ^ B) + X[7] + 4139469664 & 4294967295;
  C = D + (sum << 16 & 4294967295 | sum >>> 16);
  sum = B + (C ^ D ^ A) + X[10] + 3200236656 & 4294967295;
  B = C + (sum << 23 & 4294967295 | sum >>> 9);
  sum = A + (B ^ C ^ D) + X[13] + 681279174 & 4294967295;
  A = B + (sum << 4 & 4294967295 | sum >>> 28);
  sum = D + (A ^ B ^ C) + X[0] + 3936430074 & 4294967295;
  D = A + (sum << 11 & 4294967295 | sum >>> 21);
  sum = C + (D ^ A ^ B) + X[3] + 3572445317 & 4294967295;
  C = D + (sum << 16 & 4294967295 | sum >>> 16);
  sum = B + (C ^ D ^ A) + X[6] + 76029189 & 4294967295;
  B = C + (sum << 23 & 4294967295 | sum >>> 9);
  sum = A + (B ^ C ^ D) + X[9] + 3654602809 & 4294967295;
  A = B + (sum << 4 & 4294967295 | sum >>> 28);
  sum = D + (A ^ B ^ C) + X[12] + 3873151461 & 4294967295;
  D = A + (sum << 11 & 4294967295 | sum >>> 21);
  sum = C + (D ^ A ^ B) + X[15] + 530742520 & 4294967295;
  C = D + (sum << 16 & 4294967295 | sum >>> 16);
  sum = B + (C ^ D ^ A) + X[2] + 3299628645 & 4294967295;
  B = C + (sum << 23 & 4294967295 | sum >>> 9);
  sum = A + (C ^ (B | ~D)) + X[0] + 4096336452 & 4294967295;
  A = B + (sum << 6 & 4294967295 | sum >>> 26);
  sum = D + (B ^ (A | ~C)) + X[7] + 1126891415 & 4294967295;
  D = A + (sum << 10 & 4294967295 | sum >>> 22);
  sum = C + (A ^ (D | ~B)) + X[14] + 2878612391 & 4294967295;
  C = D + (sum << 15 & 4294967295 | sum >>> 17);
  sum = B + (D ^ (C | ~A)) + X[5] + 4237533241 & 4294967295;
  B = C + (sum << 21 & 4294967295 | sum >>> 11);
  sum = A + (C ^ (B | ~D)) + X[12] + 1700485571 & 4294967295;
  A = B + (sum << 6 & 4294967295 | sum >>> 26);
  sum = D + (B ^ (A | ~C)) + X[3] + 2399980690 & 4294967295;
  D = A + (sum << 10 & 4294967295 | sum >>> 22);
  sum = C + (A ^ (D | ~B)) + X[10] + 4293915773 & 4294967295;
  C = D + (sum << 15 & 4294967295 | sum >>> 17);
  sum = B + (D ^ (C | ~A)) + X[1] + 2240044497 & 4294967295;
  B = C + (sum << 21 & 4294967295 | sum >>> 11);
  sum = A + (C ^ (B | ~D)) + X[8] + 1873313359 & 4294967295;
  A = B + (sum << 6 & 4294967295 | sum >>> 26);
  sum = D + (B ^ (A | ~C)) + X[15] + 4264355552 & 4294967295;
  D = A + (sum << 10 & 4294967295 | sum >>> 22);
  sum = C + (A ^ (D | ~B)) + X[6] + 2734768916 & 4294967295;
  C = D + (sum << 15 & 4294967295 | sum >>> 17);
  sum = B + (D ^ (C | ~A)) + X[13] + 1309151649 & 4294967295;
  B = C + (sum << 21 & 4294967295 | sum >>> 11);
  sum = A + (C ^ (B | ~D)) + X[4] + 4149444226 & 4294967295;
  A = B + (sum << 6 & 4294967295 | sum >>> 26);
  sum = D + (B ^ (A | ~C)) + X[11] + 3174756917 & 4294967295;
  D = A + (sum << 10 & 4294967295 | sum >>> 22);
  sum = C + (A ^ (D | ~B)) + X[2] + 718787259 & 4294967295;
  C = D + (sum << 15 & 4294967295 | sum >>> 17);
  sum = B + (D ^ (C | ~A)) + X[9] + 3951481745 & 4294967295;
  this.chain_[0] = this.chain_[0] + A & 4294967295;
  this.chain_[1] = this.chain_[1] + (C + (sum << 21 & 4294967295 | sum >>> 11)) & 4294967295;
  this.chain_[2] = this.chain_[2] + C & 4294967295;
  this.chain_[3] = this.chain_[3] + D & 4294967295;
};
goog.crypt.Md5.prototype.update = function(bytes, opt_length) {
  void 0 === opt_length && (opt_length = bytes.length);
  for (var lengthMinusBlock = opt_length - this.blockSize, block = this.block_, blockLength = this.blockLength_, i = 0; i < opt_length;) {
    if (0 == blockLength) {
      for (; i <= lengthMinusBlock;) {
        this.compress_(bytes, i), i += this.blockSize;
      }
    }
    if ("string" === typeof bytes) {
      for (; i < opt_length;) {
        if (block[blockLength++] = bytes.charCodeAt(i++), blockLength == this.blockSize) {
          this.compress_(block);
          blockLength = 0;
          break;
        }
      }
    } else {
      for (; i < opt_length;) {
        if (block[blockLength++] = bytes[i++], blockLength == this.blockSize) {
          this.compress_(block);
          blockLength = 0;
          break;
        }
      }
    }
  }
  this.blockLength_ = blockLength;
  this.totalLength_ += opt_length;
};
goog.crypt.Md5.prototype.digest = function() {
  var pad = Array((56 > this.blockLength_ ? this.blockSize : 2 * this.blockSize) - this.blockLength_);
  pad[0] = 128;
  for (var i = 1; i < pad.length - 8; ++i) {
    pad[i] = 0;
  }
  var totalBits = 8 * this.totalLength_;
  for (i = pad.length - 8; i < pad.length; ++i) {
    pad[i] = totalBits & 255, totalBits /= 256;
  }
  this.update(pad);
  var digest = Array(16), n = 0;
  for (i = 0; 4 > i; ++i) {
    for (var j = 0; 32 > j; j += 8) {
      digest[n++] = this.chain_[i] >>> j & 255;
    }
  }
  return digest;
};
ee.Serializer = function(opt_isCompound) {
  this.HASH_KEY = "__ee_hash__";
  this.isCompound_ = !1 !== opt_isCompound;
  this.scope_ = [];
  this.encoded_ = {};
  this.withHashes_ = [];
  this.hashes_ = new WeakMap();
  this.sourceNodeMap_ = new WeakMap();
  this.unboundName = void 0;
};
goog.exportSymbol("ee.Serializer", ee.Serializer);
ee.Serializer.jsonSerializer_ = new goog.json.Serializer();
ee.Serializer.hash_ = new goog.crypt.Md5();
ee.Serializer.encode = function(obj, opt_isCompound) {
  return (new ee.Serializer(void 0 !== opt_isCompound ? opt_isCompound : !0)).encode_(obj);
};
goog.exportSymbol("ee.Serializer.encode", ee.Serializer.encode);
ee.Serializer.toJSON = function(obj) {
  return ee.Serializer.jsonSerializer_.serialize(ee.Serializer.encode(obj));
};
goog.exportSymbol("ee.Serializer.toJSON", ee.Serializer.toJSON);
ee.Serializer.toReadableJSON = function(obj) {
  return ee.Serializer.stringify(ee.Serializer.encode(obj, !1));
};
goog.exportSymbol("ee.Serializer.toReadableJSON", ee.Serializer.toReadableJSON);
ee.Serializer.stringify = function(encoded) {
  return "JSON" in goog.global ? goog.global.JSON.stringify(encoded, null, "  ") : ee.Serializer.jsonSerializer_.serialize(encoded);
};
ee.Serializer.prototype.encode_ = function(object) {
  var value = this.encodeValue_(object);
  this.isCompound_ && (value = goog.isObject(value) && "ValueRef" == value.type && 1 == this.scope_.length ? this.scope_[0][1] : {type:"CompoundValue", scope:this.scope_, value:value}, this.scope_ = [], module$contents$goog$array_forEach(this.withHashes_, goog.bind(function(obj) {
    delete obj[this.HASH_KEY];
  }, this)), this.withHashes_ = [], this.encoded_ = {});
  return value;
};
ee.Serializer.prototype.encodeValue_ = function(object) {
  if (void 0 === object) {
    throw Error("Can't encode an undefined value.");
  }
  var hash = goog.isObject(object) ? object[this.HASH_KEY] : null;
  if (this.isCompound_ && null != hash && this.encoded_[hash]) {
    return {type:"ValueRef", value:this.encoded_[hash]};
  }
  if (null === object || "boolean" === typeof object || "number" === typeof object || "string" === typeof object) {
    return object;
  }
  if (goog.isDateLike(object)) {
    return {type:"Invocation", functionName:"Date", arguments:{value:Math.floor(object.getTime())}};
  }
  if (object instanceof ee.Encodable) {
    var result = object.encode(goog.bind(this.encodeValue_, this));
    if (!(Array.isArray(result) || goog.isObject(result) && "ArgumentRef" != result.type)) {
      return result;
    }
  } else if (Array.isArray(object)) {
    result = module$contents$goog$array_map(object, function(element) {
      return this.encodeValue_(element);
    }, this);
  } else if (goog.isObject(object) && "function" !== typeof object) {
    var encodedObject = module$contents$goog$object_map(object, function(element) {
      if ("function" !== typeof element) {
        return this.encodeValue_(element);
      }
    }, this);
    module$contents$goog$object_remove(encodedObject, this.HASH_KEY);
    result = {type:"Dictionary", value:encodedObject};
  } else {
    throw Error("Can't encode object: " + object);
  }
  if (this.isCompound_) {
    hash = ee.Serializer.computeHash(result);
    if (this.encoded_[hash]) {
      var name = this.encoded_[hash];
    } else {
      name = String(this.scope_.length), this.scope_.push([name, result]), this.encoded_[hash] = name;
    }
    object[this.HASH_KEY] = hash;
    this.withHashes_.push(object);
    return {type:"ValueRef", value:name};
  }
  return result;
};
ee.Serializer.computeHash = function(obj) {
  ee.Serializer.hash_.reset();
  ee.Serializer.hash_.update(ee.Serializer.jsonSerializer_.serialize(obj));
  return ee.Serializer.hash_.digest().toString();
};
ee.Serializer.encodeCloudApi = function(obj) {
  return module$contents$eeapiclient$domain_object_serialize(ee.Serializer.encodeCloudApiExpression(obj));
};
goog.exportSymbol("ee.Serializer.encodeCloudApi", ee.Serializer.encodeCloudApi);
ee.Serializer.encodeCloudApiExpression = function(obj, unboundName) {
  return ee.Serializer.encodeCloudApiExpressionWithSerializer(new ee.Serializer(!0), obj, unboundName);
};
ee.Serializer.encodeCloudApiExpressionWithSerializer = function(serializer, obj, unboundName) {
  serializer.unboundName = unboundName;
  return serializer.encodeForCloudApi_(obj);
};
ee.Serializer.prototype.encodeSourceCodeNodes = function(expression) {
  var sourceCodeNodes = {}, valueNodes = expression.values, id;
  for (id in valueNodes) {
    var sourceFrame = this.sourceNodeMap_.get(valueNodes[id]);
    sourceCodeNodes[id] = Object.assign({}, sourceFrame);
  }
  return sourceCodeNodes;
};
ee.Serializer.encodeCloudApiPretty = function(obj) {
  var encoded = (new ee.Serializer(!1)).encodeForCloudApi_(obj), values = encoded.values, walkObject = function(object) {
    if (!goog.isObject(object)) {
      return object;
    }
    for (var ret = Array.isArray(object) ? [] : {}, isNode = object instanceof Object.getPrototypeOf(module$exports$eeapiclient$ee_api_client.ValueNode), $jscomp$iter$46 = $jscomp.makeIterator(Object.entries(isNode ? object.Serializable$values : object)), $jscomp$key$m759255156$28$ = $jscomp$iter$46.next(); !$jscomp$key$m759255156$28$.done; $jscomp$key$m759255156$28$ = $jscomp$iter$46.next()) {
      var $jscomp$destructuring$var51 = $jscomp.makeIterator($jscomp$key$m759255156$28$.value), key = $jscomp$destructuring$var51.next().value, val = $jscomp$destructuring$var51.next().value;
      isNode ? null !== val && (ret[key] = "functionDefinitionValue" === key && null != val.body ? {argumentNames:val.argumentNames, body:walkObject(values[val.body])} : "functionInvocationValue" === key && null != val.functionReference ? {arguments:module$contents$goog$object_map(val.arguments, walkObject), functionReference:walkObject(values[val.functionReference])} : "constantValue" === key ? val === module$exports$eeapiclient$domain_object.NULL_VALUE ? 
      null : val : walkObject(val)) : ret[key] = walkObject(val);
    }
    return ret;
  };
  return encoded.result && walkObject(values[encoded.result]);
};
goog.exportSymbol("ee.Serializer.encodeCloudApiPretty", ee.Serializer.encodeCloudApiPretty);
ee.Serializer.toCloudApiJSON = function(obj) {
  return ee.Serializer.jsonSerializer_.serialize(ee.Serializer.encodeCloudApi(obj));
};
goog.exportSymbol("ee.Serializer.toCloudApiJSON", ee.Serializer.toCloudApiJSON);
ee.Serializer.toReadableCloudApiJSON = function(obj) {
  return ee.Serializer.stringify(ee.Serializer.encodeCloudApiPretty(obj));
};
goog.exportSymbol("ee.Serializer.toReadableCloudApiJSON", ee.Serializer.toReadableCloudApiJSON);
ee.Serializer.prototype.encodeForCloudApi_ = function(obj) {
  try {
    var result = this.makeReference(obj);
    return (new ExpressionOptimizer(result, this.scope_, this.isCompound_, this.sourceNodeMap_)).optimize();
  } finally {
    this.hashes_ = new WeakMap(), this.encoded_ = {}, this.scope_ = [];
  }
};
ee.Serializer.prototype.makeReference = function(obj) {
  var $jscomp$this$m759255156$21 = this, makeRef = function(result) {
    var hash = ee.Serializer.computeHash(result);
    goog.isObject(obj) && $jscomp$this$m759255156$21.hashes_.set(obj, hash);
    if ($jscomp$this$m759255156$21.encoded_[hash]) {
      return $jscomp$this$m759255156$21.encoded_[hash];
    }
    var name = String($jscomp$this$m759255156$21.scope_.length);
    $jscomp$this$m759255156$21.scope_.push([name, result]);
    return $jscomp$this$m759255156$21.encoded_[hash] = name;
  };
  if (goog.isObject(obj) && this.encoded_[this.hashes_.get(obj)]) {
    return this.encoded_[this.hashes_.get(obj)];
  }
  if (null === obj || "boolean" === typeof obj || "string" === typeof obj || "number" === typeof obj) {
    return makeRef(ee.rpc_node.constant(obj));
  }
  if (goog.isDateLike(obj)) {
    return makeRef(ee.rpc_node.functionByName("Date", {value:ee.rpc_node.constant(Math.floor(obj.getTime()))}));
  }
  if (obj instanceof ee.Encodable) {
    var value = obj.encodeCloudValue(this), sourceFrame = obj.getSourceFrame();
    null !== sourceFrame && this.sourceNodeMap_.set(value, sourceFrame);
    return makeRef(value);
  }
  if (Array.isArray(obj)) {
    return makeRef(ee.rpc_node.array(obj.map(function(x) {
      return ee.rpc_node.reference($jscomp$this$m759255156$21.makeReference(x));
    })));
  }
  if (goog.isObject(obj) && "function" !== typeof obj) {
    var values = {};
    Object.keys(obj).sort().forEach(function(k) {
      values[k] = ee.rpc_node.reference($jscomp$this$m759255156$21.makeReference(obj[k]));
    });
    return makeRef(ee.rpc_node.dictionary(values));
  }
  throw Error("Can't encode object: " + obj);
};
var ExpressionOptimizer = function(rootReference, values, isCompound, sourceNodeMap) {
  var $jscomp$this$m759255156$22 = this;
  this.rootReference = rootReference;
  this.values = {};
  values.forEach(function(tuple) {
    return $jscomp$this$m759255156$22.values[tuple[0]] = tuple[1];
  });
  this.referenceCounts = isCompound ? this.countReferences() : null;
  this.optimizedValues = {};
  this.referenceMap = {};
  this.nextMappedRef = 0;
  this.sourceNodeMap = sourceNodeMap;
};
ExpressionOptimizer.prototype.optimize = function() {
  var result = this.optimizeReference(this.rootReference);
  return new module$exports$eeapiclient$ee_api_client.Expression({result:result, values:this.optimizedValues});
};
ExpressionOptimizer.prototype.optimizeReference = function(ref) {
  if (ref in this.referenceMap) {
    return this.referenceMap[ref];
  }
  var mappedRef = String(this.nextMappedRef++);
  this.referenceMap[ref] = mappedRef;
  this.optimizedValues[mappedRef] = this.optimizeValue(this.values[ref], 0);
  return mappedRef;
};
ExpressionOptimizer.prototype.optimizeValue = function(value, depth) {
  var $jscomp$this$m759255156$25 = this, isConst = function(v) {
    return null !== v.constantValue;
  }, serializeConst = function(v) {
    return v === module$exports$eeapiclient$domain_object.NULL_VALUE ? null : v;
  }, storeInSourceMap = function(parentValue, valueNode) {
    $jscomp$this$m759255156$25.sourceNodeMap && $jscomp$this$m759255156$25.sourceNodeMap.has(parentValue) && !$jscomp$this$m759255156$25.sourceNodeMap.has(valueNode) && $jscomp$this$m759255156$25.sourceNodeMap.set(valueNode, $jscomp$this$m759255156$25.sourceNodeMap.get(parentValue));
    return valueNode;
  };
  if (isConst(value) || null != value.integerValue || null != value.bytesValue || null != value.argumentReference) {
    return value;
  }
  if (null != value.valueReference) {
    var referencedValue = this.values[value.valueReference];
    if (null === this.referenceCounts || 50 > depth && 1 === this.referenceCounts[value.valueReference]) {
      var optimized = this.optimizeValue(referencedValue, depth);
      return storeInSourceMap(value, optimized);
    }
    if (ExpressionOptimizer.isAlwaysLiftable(referencedValue)) {
      return storeInSourceMap(value, referencedValue);
    }
    var optimized$jscomp$0 = ee.rpc_node.reference(this.optimizeReference(value.valueReference));
    return storeInSourceMap(value, optimized$jscomp$0);
  }
  if (null != value.arrayValue) {
    var arr = value.arrayValue.values.map(function(v) {
      return $jscomp$this$m759255156$25.optimizeValue(v, depth + 3);
    }), optimized$jscomp$1 = arr.every(isConst) ? ee.rpc_node.constant(arr.map(function(v) {
      return serializeConst(v.constantValue);
    })) : ee.rpc_node.array(arr);
    return storeInSourceMap(value, optimized$jscomp$1);
  }
  if (null != value.dictionaryValue) {
    for (var values = {}, constantValues = {}, $jscomp$iter$47 = $jscomp.makeIterator(Object.entries(value.dictionaryValue.values || {})), $jscomp$key$m759255156$29$ = $jscomp$iter$47.next(); !$jscomp$key$m759255156$29$.done; $jscomp$key$m759255156$29$ = $jscomp$iter$47.next()) {
      var $jscomp$destructuring$var53 = $jscomp.makeIterator($jscomp$key$m759255156$29$.value), k = $jscomp$destructuring$var53.next().value, v = $jscomp$destructuring$var53.next().value;
      values[k] = this.optimizeValue(v, depth + 3);
      null !== constantValues && isConst(values[k]) ? constantValues[k] = serializeConst(values[k].constantValue) : constantValues = null;
    }
    return null !== constantValues ? storeInSourceMap(value, ee.rpc_node.constant(constantValues)) : storeInSourceMap(values, ee.rpc_node.dictionary(values));
  }
  if (null != value.functionDefinitionValue) {
    var def = value.functionDefinitionValue, optimized$jscomp$2 = ee.rpc_node.functionDefinition(def.argumentNames || [], this.optimizeReference(def.body || ""));
    return storeInSourceMap(value, optimized$jscomp$2);
  }
  if (null != value.functionInvocationValue) {
    for (var inv = value.functionInvocationValue, args = {}, $jscomp$iter$48 = $jscomp.makeIterator(Object.keys(inv.arguments || {})), $jscomp$key$m759255156$30$k = $jscomp$iter$48.next(); !$jscomp$key$m759255156$30$k.done; $jscomp$key$m759255156$30$k = $jscomp$iter$48.next()) {
      var k$jscomp$0 = $jscomp$key$m759255156$30$k.value;
      args[k$jscomp$0] = this.optimizeValue(inv.arguments[k$jscomp$0], depth + 3);
    }
    var optimized$jscomp$3 = inv.functionName ? ee.rpc_node.functionByName(inv.functionName, args) : ee.rpc_node.functionByReference(this.optimizeReference(inv.functionReference || ""), args);
    return storeInSourceMap(value, optimized$jscomp$3);
  }
  throw Error("Can't optimize value: " + value);
};
ExpressionOptimizer.isAlwaysLiftable = function(value) {
  var constant = value.constantValue;
  return null !== constant ? constant === module$exports$eeapiclient$domain_object.NULL_VALUE || "number" === typeof constant || "boolean" === typeof constant : null != value.argumentReference;
};
ExpressionOptimizer.prototype.countReferences = function() {
  var $jscomp$this$m759255156$27 = this, counts = {}, visitReference = function(reference) {
    counts[reference] ? counts[reference]++ : (counts[reference] = 1, visitValue($jscomp$this$m759255156$27.values[reference]));
  }, visitValue = function(value) {
    if (null != value.arrayValue) {
      value.arrayValue.values.forEach(visitValue);
    } else if (null != value.dictionaryValue) {
      Object.values(value.dictionaryValue.values).forEach(visitValue);
    } else if (null != value.functionDefinitionValue) {
      visitReference(value.functionDefinitionValue.body);
    } else if (null != value.functionInvocationValue) {
      var inv = value.functionInvocationValue;
      null != inv.functionReference && visitReference(inv.functionReference);
      Object.values(inv.arguments).forEach(visitValue);
    } else {
      null != value.valueReference && visitReference(value.valueReference);
    }
  };
  visitReference(this.rootReference);
  return counts;
};
ee.rpc_convert_batch = {};
ee.rpc_convert_batch.ExportDestination = {DRIVE:"DRIVE", GCS:"GOOGLE_CLOUD_STORAGE", ASSET:"ASSET", FEATURE_VIEW:"FEATURE_VIEW", BIGQUERY:"BIGQUERY"};
ee.rpc_convert_batch.taskToExportImageRequest = function(params) {
  if (null == params.element) {
    throw Error('"element" not found in params ' + params);
  }
  var result = new module$exports$eeapiclient$ee_api_client.ExportImageRequest({expression:ee.Serializer.encodeCloudApiExpression(params.element), description:stringOrNull_(params.description), fileExportOptions:null, assetExportOptions:null, grid:null, maxPixels:stringOrNull_(params.maxPixels), requestId:stringOrNull_(params.id), maxWorkers:numberOrNull_(params.maxWorkers), priority:numberOrNull_(params.priority)}), destination = ee.rpc_convert_batch.guessDestination_(params);
  switch(destination) {
    case ee.rpc_convert_batch.ExportDestination.GCS:
    case ee.rpc_convert_batch.ExportDestination.DRIVE:
      result.fileExportOptions = ee.rpc_convert_batch.buildImageFileExportOptions_(params, destination);
      break;
    case ee.rpc_convert_batch.ExportDestination.ASSET:
      result.assetExportOptions = ee.rpc_convert_batch.buildImageAssetExportOptions_(params);
      break;
    default:
      throw Error('Export destination "' + destination + '" unknown');
  }
  return result;
};
ee.rpc_convert_batch.taskToExportTableRequest = function(params) {
  if (null == params.element) {
    throw Error('"element" not found in params ' + params);
  }
  var selectors = params.selectors || null;
  null != selectors && "string" === typeof selectors && (selectors = selectors.split(","));
  var result = new module$exports$eeapiclient$ee_api_client.ExportTableRequest({expression:ee.Serializer.encodeCloudApiExpression(params.element), description:stringOrNull_(params.description), fileExportOptions:null, assetExportOptions:null, featureViewExportOptions:null, bigqueryExportOptions:null, selectors:selectors, maxErrorMeters:numberOrNull_(params.maxErrorMeters), requestId:stringOrNull_(params.id), maxVertices:numberOrNull_(params.maxVertices), maxWorkers:numberOrNull_(params.maxWorkers), 
  priority:numberOrNull_(params.priority)}), destination = ee.rpc_convert_batch.guessDestination_(params);
  switch(destination) {
    case ee.rpc_convert_batch.ExportDestination.GCS:
    case ee.rpc_convert_batch.ExportDestination.DRIVE:
      result.fileExportOptions = ee.rpc_convert_batch.buildTableFileExportOptions_(params, destination);
      break;
    case ee.rpc_convert_batch.ExportDestination.ASSET:
      result.assetExportOptions = ee.rpc_convert_batch.buildTableAssetExportOptions_(params);
      break;
    case ee.rpc_convert_batch.ExportDestination.FEATURE_VIEW:
      result.featureViewExportOptions = ee.rpc_convert_batch.buildFeatureViewExportOptions_(params);
      break;
    case ee.rpc_convert_batch.ExportDestination.BIGQUERY:
      result.bigqueryExportOptions = ee.rpc_convert_batch.buildBigQueryExportOptions_(params);
      break;
    default:
      throw Error('Export destination "' + destination + '" unknown');
  }
  params.workloadTag && (result.workloadTag = params.workloadTag);
  return result;
};
ee.rpc_convert_batch.taskToExportVideoRequest = function(params) {
  if (null == params.element) {
    throw Error('"element" not found in params ' + params);
  }
  var result = new module$exports$eeapiclient$ee_api_client.ExportVideoRequest({expression:ee.Serializer.encodeCloudApiExpression(params.element), description:stringOrNull_(params.description), videoOptions:ee.rpc_convert_batch.buildVideoOptions_(params), fileExportOptions:null, requestId:stringOrNull_(params.id), maxWorkers:numberOrNull_(params.maxWorkers), priority:numberOrNull_(params.priority)});
  result.fileExportOptions = ee.rpc_convert_batch.buildVideoFileExportOptions_(params, ee.rpc_convert_batch.guessDestination_(params));
  return result;
};
ee.rpc_convert_batch.taskToExportMapRequest = function(params) {
  if (null == params.element) {
    throw Error('"element" not found in params ' + params);
  }
  return new module$exports$eeapiclient$ee_api_client.ExportMapRequest({expression:ee.Serializer.encodeCloudApiExpression(params.element), description:stringOrNull_(params.description), tileOptions:ee.rpc_convert_batch.buildTileOptions_(params), tileExportOptions:ee.rpc_convert_batch.buildImageFileExportOptions_(params, ee.rpc_convert_batch.ExportDestination.GCS), requestId:stringOrNull_(params.id), maxWorkers:numberOrNull_(params.maxWorkers), priority:numberOrNull_(params.priority)});
};
ee.rpc_convert_batch.taskToExportVideoMapRequest = function(params) {
  if (null == params.element) {
    throw Error('"element" not found in params ' + params);
  }
  return new module$exports$eeapiclient$ee_api_client.ExportVideoMapRequest({expression:ee.Serializer.encodeCloudApiExpression(params.element), description:stringOrNull_(params.description), videoOptions:ee.rpc_convert_batch.buildVideoMapOptions_(params), tileOptions:ee.rpc_convert_batch.buildTileOptions_(params), tileExportOptions:ee.rpc_convert_batch.buildVideoFileExportOptions_(params, ee.rpc_convert_batch.ExportDestination.GCS), requestId:stringOrNull_(params.id), 
  version:stringOrNull_(params.version), maxWorkers:numberOrNull_(params.maxWorkers), priority:numberOrNull_(params.priority)});
};
ee.rpc_convert_batch.taskToExportClassifierRequest = function(params) {
  if (null == params.element) {
    throw Error('"element" not found in params ' + params);
  }
  var destination = ee.rpc_convert_batch.guessDestination_(params);
  if (destination != ee.rpc_convert_batch.ExportDestination.ASSET) {
    throw Error('Export destination "' + destination + '" unknown');
  }
  return new module$exports$eeapiclient$ee_api_client.ExportClassifierRequest({expression:ee.Serializer.encodeCloudApiExpression(params.element), description:stringOrNull_(params.description), requestId:stringOrNull_(params.id), assetExportOptions:new module$exports$eeapiclient$ee_api_client.ClassifierAssetExportOptions({earthEngineDestination:ee.rpc_convert_batch.buildEarthEngineDestination_(params)}), maxWorkers:numberOrNull_(params.maxWorkers), 
  priority:numberOrNull_(params.priority)});
};
function stringOrNull_(value) {
  return null != value ? String(value) : null;
}
function numberOrNull_(value) {
  return null != value ? Number(value) : null;
}
function noDataOrNull_(value) {
  return null != value ? new module$exports$eeapiclient$ee_api_client.Number({floatValue:Number(value)}) : null;
}
ee.rpc_convert_batch.guessDestination_ = function(params) {
  var destination = ee.rpc_convert_batch.ExportDestination.DRIVE;
  if (null == params) {
    return destination;
  }
  null != params.outputBucket || null != params.outputPrefix ? destination = ee.rpc_convert_batch.ExportDestination.GCS : null != params.assetId ? destination = ee.rpc_convert_batch.ExportDestination.ASSET : null != params.mapName && (destination = ee.rpc_convert_batch.ExportDestination.FEATURE_VIEW);
  null != params.table && (destination = ee.rpc_convert_batch.ExportDestination.BIGQUERY);
  return destination;
};
ee.rpc_convert_batch.buildGeoTiffFormatOptions_ = function(params) {
  if (params.fileDimensions && params.tiffFileDimensions) {
    throw Error('Export cannot set both "fileDimensions" and "tiffFileDimensions".');
  }
  var tileSize = params.tiffShardSize || params.shardSize;
  return new module$exports$eeapiclient$ee_api_client.GeoTiffImageExportOptions({cloudOptimized:!!params.tiffCloudOptimized, skipEmptyFiles:!(!params.skipEmptyTiles && !params.tiffSkipEmptyFiles), tileDimensions:ee.rpc_convert_batch.buildGridDimensions_(params.fileDimensions || params.tiffFileDimensions), tileSize:numberOrNull_(tileSize), noData:noDataOrNull_(params.tiffNoData)});
};
ee.rpc_convert_batch.buildTfRecordFormatOptions_ = function(params) {
  var tfRecordOptions = new module$exports$eeapiclient$ee_api_client.TfRecordImageExportOptions({compress:!!params.tfrecordCompressed, maxSizeBytes:stringOrNull_(params.tfrecordMaxFileSize), sequenceData:!!params.tfrecordSequenceData, collapseBands:!!params.tfrecordCollapseBands, maxMaskedRatio:numberOrNull_(params.tfrecordMaskedThreshold), defaultValue:numberOrNull_(params.tfrecordDefaultValue), tileDimensions:ee.rpc_convert_batch.buildGridDimensions_(params.tfrecordPatchDimensions), 
  marginDimensions:ee.rpc_convert_batch.buildGridDimensions_(params.tfrecordKernelSize), tensorDepths:null}), tensorDepths = params.tfrecordTensorDepths;
  if (null != tensorDepths) {
    if (goog.isObject(tensorDepths)) {
      var result = {};
      module$contents$goog$object_forEach(tensorDepths, function(v, k) {
        if ("string" !== typeof k || "number" !== typeof v) {
          throw Error('"tensorDepths" option must be an object of type Object<string, number>');
        }
        result[k] = v;
      });
      tfRecordOptions.tensorDepths = result;
    } else {
      throw Error('"tensorDepths" option needs to have the form Object<string, number>.');
    }
  }
  return tfRecordOptions;
};
ee.rpc_convert_batch.buildImageFileExportOptions_ = function(params, destination) {
  var result = new module$exports$eeapiclient$ee_api_client.ImageFileExportOptions({cloudStorageDestination:null, driveDestination:null, geoTiffOptions:null, tfRecordOptions:null, fileFormat:ee.rpc_convert.fileFormat(params.fileFormat)});
  "GEO_TIFF" === result.fileFormat ? result.geoTiffOptions = ee.rpc_convert_batch.buildGeoTiffFormatOptions_(params) : "TF_RECORD_IMAGE" === result.fileFormat && (result.tfRecordOptions = ee.rpc_convert_batch.buildTfRecordFormatOptions_(params));
  destination === ee.rpc_convert_batch.ExportDestination.GCS ? result.cloudStorageDestination = ee.rpc_convert_batch.buildCloudStorageDestination_(params) : result.driveDestination = ee.rpc_convert_batch.buildDriveDestination_(params);
  return result;
};
ee.rpc_convert_batch.buildImageAssetExportOptions_ = function(params) {
  var allPolicies = params.pyramidingPolicy || {};
  try {
    allPolicies = JSON.parse(allPolicies);
  } catch ($jscomp$unused$catch$202873324$0) {
  }
  var defaultPyramidingPolicy = "PYRAMIDING_POLICY_UNSPECIFIED";
  "string" === typeof allPolicies ? (defaultPyramidingPolicy = allPolicies, allPolicies = {}) : allPolicies[".default"] && (defaultPyramidingPolicy = allPolicies[".default"], delete allPolicies[".default"]);
  return new module$exports$eeapiclient$ee_api_client.ImageAssetExportOptions({earthEngineDestination:ee.rpc_convert_batch.buildEarthEngineDestination_(params), pyramidingPolicy:defaultPyramidingPolicy, pyramidingPolicyOverrides:module$contents$goog$object_isEmpty(allPolicies) ? null : allPolicies, tileSize:numberOrNull_(params.shardSize)});
};
ee.rpc_convert_batch.buildTableFileExportOptions_ = function(params, destination) {
  var result = new module$exports$eeapiclient$ee_api_client.TableFileExportOptions({cloudStorageDestination:null, driveDestination:null, fileFormat:ee.rpc_convert.tableFileFormat(params.fileFormat)});
  destination === ee.rpc_convert_batch.ExportDestination.GCS ? result.cloudStorageDestination = ee.rpc_convert_batch.buildCloudStorageDestination_(params) : result.driveDestination = ee.rpc_convert_batch.buildDriveDestination_(params);
  return result;
};
ee.rpc_convert_batch.buildTableAssetExportOptions_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.TableAssetExportOptions({earthEngineDestination:ee.rpc_convert_batch.buildEarthEngineDestination_(params)});
};
ee.rpc_convert_batch.buildFeatureViewExportOptions_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.FeatureViewAssetExportOptions({featureViewDestination:ee.rpc_convert_batch.buildFeatureViewDestination_(params), ingestionTimeParameters:ee.rpc_convert_batch.buildFeatureViewIngestionTimeParameters_(params)});
};
ee.rpc_convert_batch.buildBigQueryExportOptions_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.BigQueryExportOptions({bigqueryDestination:ee.rpc_convert_batch.buildBigQueryDestination_(params)});
};
ee.rpc_convert_batch.buildVideoFileExportOptions_ = function(params, destination) {
  var result = new module$exports$eeapiclient$ee_api_client.VideoFileExportOptions({cloudStorageDestination:null, driveDestination:null, fileFormat:"MP4"});
  destination === ee.rpc_convert_batch.ExportDestination.GCS ? result.cloudStorageDestination = ee.rpc_convert_batch.buildCloudStorageDestination_(params) : result.driveDestination = ee.rpc_convert_batch.buildDriveDestination_(params);
  return result;
};
ee.rpc_convert_batch.buildVideoOptions_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.VideoOptions({framesPerSecond:numberOrNull_(params.framesPerSecond), maxFrames:numberOrNull_(params.maxFrames), maxPixelsPerFrame:stringOrNull_(params.maxPixels)});
};
ee.rpc_convert_batch.buildVideoMapOptions_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.VideoOptions({framesPerSecond:numberOrNull_(params.framesPerSecond), maxFrames:numberOrNull_(params.maxFrames), maxPixelsPerFrame:null});
};
ee.rpc_convert_batch.buildTileOptions_ = function(params) {
  var $jscomp$nullish$tmp5, $jscomp$nullish$tmp6, $jscomp$nullish$tmp7, $jscomp$nullish$tmp8;
  return new module$exports$eeapiclient$ee_api_client.TileOptions({endZoom:numberOrNull_(null != ($jscomp$nullish$tmp5 = params.endZoom) ? $jscomp$nullish$tmp5 : params.maxZoom), startZoom:numberOrNull_(null != ($jscomp$nullish$tmp6 = params.startZoom) ? $jscomp$nullish$tmp6 : params.minZoom), scale:numberOrNull_(params.scale), skipEmpty:!(null != ($jscomp$nullish$tmp7 = params.skipEmpty) ? !$jscomp$nullish$tmp7 : !params.skipEmptyTiles), mapsApiKey:stringOrNull_(params.mapsApiKey), 
  dimensions:ee.rpc_convert_batch.buildGridDimensions_(null != ($jscomp$nullish$tmp8 = params.dimensions) ? $jscomp$nullish$tmp8 : params.tileDimensions), stride:numberOrNull_(params.stride), zoomSubset:ee.rpc_convert_batch.buildZoomSubset_(numberOrNull_(params.minTimeMachineZoomSubset), numberOrNull_(params.maxTimeMachineZoomSubset))});
};
ee.rpc_convert_batch.buildZoomSubset_ = function(start, end) {
  return null == start && null == end ? null : new module$exports$eeapiclient$ee_api_client.ZoomSubset({start:null != start ? start : 0, end:end});
};
ee.rpc_convert_batch.buildGridDimensions_ = function(dimensions) {
  if (null == dimensions) {
    return null;
  }
  var result = new module$exports$eeapiclient$ee_api_client.GridDimensions({height:0, width:0});
  "string" === typeof dimensions && (-1 !== dimensions.indexOf("x") ? dimensions = dimensions.split("x").map(Number) : -1 !== dimensions.indexOf(",") && (dimensions = dimensions.split(",").map(Number)));
  if (Array.isArray(dimensions)) {
    if (2 === dimensions.length) {
      result.height = dimensions[0], result.width = dimensions[1];
    } else if (1 === dimensions.length) {
      result.height = dimensions[0], result.width = dimensions[0];
    } else {
      throw Error("Unable to construct grid from dimensions: " + dimensions);
    }
  } else if ("number" !== typeof dimensions || isNaN(dimensions)) {
    if (goog.isObject(dimensions) && null != dimensions.height && null != dimensions.width) {
      result.height = dimensions.height, result.width = dimensions.width;
    } else {
      throw Error("Unable to construct grid from dimensions: " + dimensions);
    }
  } else {
    result.height = dimensions, result.width = dimensions;
  }
  return result;
};
ee.rpc_convert_batch.buildCloudStorageDestination_ = function(params) {
  var permissions = null;
  null != params.writePublicTiles && (permissions = params.writePublicTiles ? "PUBLIC" : "DEFAULT_OBJECT_ACL");
  return new module$exports$eeapiclient$ee_api_client.CloudStorageDestination({bucket:stringOrNull_(params.outputBucket), filenamePrefix:stringOrNull_(params.outputPrefix), bucketCorsUris:params.bucketCorsUris || null, permissions:permissions});
};
ee.rpc_convert_batch.buildDriveDestination_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.DriveDestination({folder:stringOrNull_(params.driveFolder), filenamePrefix:stringOrNull_(params.driveFileNamePrefix)});
};
ee.rpc_convert_batch.buildEarthEngineDestination_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.EarthEngineDestination({name:ee.rpc_convert.assetIdToAssetName(params.assetId)});
};
ee.rpc_convert_batch.buildFeatureViewDestination_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.FeatureViewDestination({name:ee.rpc_convert.assetIdToAssetName(params.mapName)});
};
ee.rpc_convert_batch.buildBigQueryDestination_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.BigQueryDestination({table:stringOrNull_(params.table), overwrite:!!params.overwrite, append:!!params.append});
};
ee.rpc_convert_batch.buildFeatureViewIngestionTimeParameters_ = function(params) {
  return new module$exports$eeapiclient$ee_api_client.FeatureViewIngestionTimeParameters({thinningOptions:ee.rpc_convert_batch.buildThinningOptions_(params), rankingOptions:ee.rpc_convert_batch.buildRankingOptions_(params)});
};
ee.rpc_convert_batch.buildThinningOptions_ = function(params) {
  return null == params ? null : new module$exports$eeapiclient$ee_api_client.ThinningOptions({maxFeaturesPerTile:numberOrNull_(params.maxFeaturesPerTile), thinningStrategy:params.thinningStrategy});
};
ee.rpc_convert_batch.buildRankingOptions_ = function(params) {
  return null == params ? null : new module$exports$eeapiclient$ee_api_client.RankingOptions({zOrderRankingRule:ee.rpc_convert_batch.buildRankingRule_(params.zOrderRanking), thinningRankingRule:ee.rpc_convert_batch.buildRankingRule_(params.thinningRanking)});
};
ee.rpc_convert_batch.buildRankingRule_ = function(rules) {
  if (!rules) {
    return null;
  }
  var originalRules = rules;
  "string" === typeof rules && (rules = rules.split(","));
  if (Array.isArray(rules)) {
    return new module$exports$eeapiclient$ee_api_client.RankingRule({rankByOneThingRule:(rules || []).map(ee.rpc_convert_batch.buildRankByOneThingRule_)});
  }
  throw Error("Unable to build ranking rule from rules: " + JSON.stringify(originalRules) + ". Rules should either be a comma-separated string or list of strings.");
};
ee.rpc_convert_batch.buildRankByOneThingRule_ = function(ruleString) {
  var rankByOneThingRule = new module$exports$eeapiclient$ee_api_client.RankByOneThingRule({direction:null, rankByAttributeRule:null, rankByMinZoomLevelRule:null, rankByGeometryTypeRule:null});
  ruleString = ruleString.trim();
  var matches = ruleString.match(/^([\S]+.*)\s+(ASC|DESC)$/);
  if (null == matches) {
    throw Error("Ranking rule format is invalid. Each rule should be defined by a rule type and a direction (ASC or DESC), separated by a space. Valid rule types are: .geometryType, .minZoomLevel, or a feature property name.");
  }
  var $jscomp$destructuring$var54 = $jscomp.makeIterator(matches);
  $jscomp$destructuring$var54.next();
  var ruleType = $jscomp$destructuring$var54.next().value, direction = $jscomp$destructuring$var54.next().value;
  switch(direction.toUpperCase()) {
    case "ASC":
      rankByOneThingRule.direction = "ASCENDING";
      break;
    case "DESC":
      rankByOneThingRule.direction = "DESCENDING";
      break;
    default:
      throw Error("Ranking rule direction '" + direction + "' is invalid. Directions are: ASC, DESC.");
  }
  switch(ruleType.trim()) {
    case ".geometryType":
      rankByOneThingRule.rankByGeometryTypeRule = new module$exports$eeapiclient$ee_api_client.RankByGeometryTypeRule({});
      break;
    case ".minZoomLevel":
      rankByOneThingRule.rankByMinZoomLevelRule = new module$exports$eeapiclient$ee_api_client.RankByMinZoomLevelRule({});
      break;
    default:
      rankByOneThingRule.rankByAttributeRule = new module$exports$eeapiclient$ee_api_client.RankByAttributeRule({attributeName:stringOrNull_(ruleType)});
  }
  return rankByOneThingRule;
};
goog.singleton = {};
var module$contents$goog$singleton_instantiatedSingletons = [], module$contents$goog$singleton_Singleton = function() {
};
goog.singleton.getInstance = function(ctor) {
  (0,goog.asserts.assert)(!Object.isSealed(ctor), "Cannot use getInstance() with a sealed constructor.");
  var prop = "instance_";
  if (ctor.instance_ && ctor.hasOwnProperty(prop)) {
    return ctor.instance_;
  }
  goog.DEBUG && module$contents$goog$singleton_instantiatedSingletons.push(ctor);
  var instance = new ctor();
  ctor.instance_ = instance;
  (0,goog.asserts.assert)(ctor.hasOwnProperty(prop), "Could not instantiate singleton.");
  return instance;
};
goog.singleton.instantiatedSingletons = module$contents$goog$singleton_instantiatedSingletons;
ee.data = {};
ee.data.AbstractTaskConfig = {};
ee.data.AlgorithmsRegistry = {};
ee.data.AssetList = {};
ee.data.BigQueryTaskConfig = {};
ee.data.ClassifierTaskConfig = {};
ee.data.FeatureViewTaskConfig = {};
ee.data.ImageTaskConfig = {};
ee.data.MapTaskConfig = {};
ee.data.TableTaskConfig = {};
ee.data.VideoMapTaskConfig = {};
ee.data.VideoTaskConfig = {};
ee.data.authenticateViaOauth = function(clientId, success, opt_error, opt_extraScopes, opt_onImmediateFailed, opt_suppressDefaultScopes) {
  var scopes = module$contents$ee$apiclient_apiclient.mergeAuthScopes_(!opt_suppressDefaultScopes, !1, opt_extraScopes || []);
  module$contents$ee$apiclient_apiclient.setAuthClient(clientId, scopes);
  null === clientId ? module$contents$ee$apiclient_apiclient.clearAuthToken() : module$contents$ee$apiclient_apiclient.ensureAuthLibLoaded_(function() {
    var onImmediateFailed = opt_onImmediateFailed || goog.partial(ee.data.authenticateViaPopup, success, opt_error);
    ee.data.refreshAuthToken(success, opt_error, onImmediateFailed);
  });
};
goog.exportSymbol("ee.data.authenticateViaOauth", ee.data.authenticateViaOauth);
ee.data.authenticate = function(clientId, success, opt_error, opt_extraScopes, opt_onImmediateFailed) {
  ee.data.authenticateViaOauth(clientId, success, opt_error, opt_extraScopes, opt_onImmediateFailed);
};
goog.exportSymbol("ee.data.authenticate", ee.data.authenticate);
ee.data.authenticateViaPopup = function(opt_success, opt_error) {
  goog.global.google.accounts.oauth2.initTokenClient({client_id:module$contents$ee$apiclient_apiclient.getAuthClientId(), callback:goog.partial(module$contents$ee$apiclient_apiclient.handleAuthResult_, opt_success, opt_error), scope:module$contents$ee$apiclient_apiclient.getAuthScopes().join(" ")}).requestAccessToken();
};
goog.exportSymbol("ee.data.authenticateViaPopup", ee.data.authenticateViaPopup);
ee.data.authenticateViaPrivateKey = function(privateKey, opt_success, opt_error, opt_extraScopes, opt_suppressDefaultScopes) {
  if ("window" in goog.global) {
    throw Error("Use of private key authentication in the browser is insecure. Consider using OAuth, instead.");
  }
  var scopes = module$contents$ee$apiclient_apiclient.mergeAuthScopes_(!opt_suppressDefaultScopes, !opt_suppressDefaultScopes, opt_extraScopes || []);
  module$contents$ee$apiclient_apiclient.setAuthClient(privateKey.client_email, scopes);
  var jwtClient = new google.auth.JWT(privateKey.client_email, null, privateKey.private_key, scopes, null);
  ee.data.setAuthTokenRefresher(function(authArgs, callback) {
    jwtClient.authorize(function(error, token) {
      error ? callback({error:error}) : callback({access_token:token.access_token, token_type:token.token_type, expires_in:(token.expiry_date - Date.now()) / 1E3});
    });
  });
  ee.data.refreshAuthToken(opt_success, opt_error);
};
goog.exportSymbol("ee.data.authenticateViaPrivateKey", ee.data.authenticateViaPrivateKey);
ee.data.setApiKey = module$contents$ee$apiclient_apiclient.setApiKey;
ee.data.setProject = module$contents$ee$apiclient_apiclient.setProject;
ee.data.getProject = module$contents$ee$apiclient_apiclient.getProject;
ee.data.PROFILE_REQUEST_HEADER = module$contents$ee$apiclient_apiclient.PROFILE_REQUEST_HEADER;
ee.data.setExpressionAugmenter = function(augmenter) {
  ee.data.expressionAugmenter_ = augmenter || goog.functions.identity;
};
goog.exportSymbol("ee.data.setExpressionAugmenter", ee.data.setExpressionAugmenter);
ee.data.expressionAugmenter_ = goog.functions.identity;
ee.data.setAuthToken = module$contents$ee$apiclient_apiclient.setAuthToken;
goog.exportSymbol("ee.data.setAuthToken", ee.data.setAuthToken);
ee.data.refreshAuthToken = module$contents$ee$apiclient_apiclient.refreshAuthToken;
goog.exportSymbol("ee.data.refreshAuthToken", ee.data.refreshAuthToken);
ee.data.setAuthTokenRefresher = module$contents$ee$apiclient_apiclient.setAuthTokenRefresher;
goog.exportSymbol("ee.data.setAuthTokenRefresher", ee.data.setAuthTokenRefresher);
ee.data.getAuthToken = module$contents$ee$apiclient_apiclient.getAuthToken;
goog.exportSymbol("ee.data.getAuthToken", ee.data.getAuthToken);
ee.data.clearAuthToken = module$contents$ee$apiclient_apiclient.clearAuthToken;
goog.exportSymbol("ee.data.clearAuthToken", ee.data.clearAuthToken);
ee.data.getAuthClientId = module$contents$ee$apiclient_apiclient.getAuthClientId;
goog.exportSymbol("ee.data.getAuthClientId", ee.data.getAuthClientId);
ee.data.getAuthScopes = module$contents$ee$apiclient_apiclient.getAuthScopes;
goog.exportSymbol("ee.data.getAuthScopes", ee.data.getAuthScopes);
ee.data.setDeadline = module$contents$ee$apiclient_apiclient.setDeadline;
goog.exportSymbol("ee.data.setDeadline", ee.data.setDeadline);
ee.data.setParamAugmenter = module$contents$ee$apiclient_apiclient.setParamAugmenter;
goog.exportSymbol("ee.data.setParamAugmenter", ee.data.setParamAugmenter);
ee.data.initialize = module$contents$ee$apiclient_apiclient.initialize;
ee.data.reset = module$contents$ee$apiclient_apiclient.reset;
ee.data.PROFILE_HEADER = module$contents$ee$apiclient_apiclient.PROFILE_HEADER;
ee.data.makeRequest_ = module$contents$ee$apiclient_apiclient.makeRequest_;
ee.data.send_ = module$contents$ee$apiclient_apiclient.send;
ee.data.setupMockSend = module$contents$ee$apiclient_apiclient.setupMockSend;
ee.data.withProfiling = module$contents$ee$apiclient_apiclient.withProfiling;
ee.data.getAlgorithms = function(opt_callback) {
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.algorithms().list(call.projectsPath(), {prettyPrint:!1}).then(ee.rpc_convert.algorithms));
};
ee.data.getSourceFrame = function() {
  return null == ee.data.sourceFrameGenerator_ ? null : ee.data.sourceFrameGenerator_();
};
ee.data.getMapId = function(params, opt_callback) {
  if ("string" === typeof params.image) {
    throw Error("Image as JSON string not supported.");
  }
  if (void 0 !== params.version) {
    throw Error("Image version specification not supported.");
  }
  var map = new module$exports$eeapiclient$ee_api_client.EarthEngineMap({name:null, expression:ee.data.expressionAugmenter_(ee.Serializer.encodeCloudApiExpression(params.image)), fileFormat:ee.rpc_convert.fileFormat(params.format), bandIds:ee.rpc_convert.bandList(params.bands), visualizationOptions:ee.rpc_convert.visualizationOptions(params)}), queryParams = {fields:"name"}, workloadTag = ee.data.getWorkloadTag();
  workloadTag && (queryParams.workloadTag = workloadTag);
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.maps().create(call.projectsPath(), map, queryParams).then(function(response) {
    return ee.data.makeMapId_(response.name, "");
  }));
};
goog.exportSymbol("ee.data.getMapId", ee.data.getMapId);
ee.data.getTileUrl = function(id, x, y, z) {
  if (!id.formatTileUrl) {
    var newId = ee.data.makeMapId_(id.mapid, id.token, id.urlFormat);
    id.urlFormat = newId.urlFormat;
    id.formatTileUrl = newId.formatTileUrl;
  }
  return id.formatTileUrl(x, y, z);
};
goog.exportSymbol("ee.data.getTileUrl", ee.data.getTileUrl);
ee.data.makeMapId_ = function(mapid, token, opt_urlFormat) {
  var urlFormat = void 0 === opt_urlFormat ? "" : opt_urlFormat;
  if (!urlFormat) {
    module$contents$ee$apiclient_apiclient.initialize();
    var base = module$contents$ee$apiclient_apiclient.getTileBaseUrl();
    urlFormat = token ? base + "/map/" + mapid + "/{z}/{x}/{y}?token=" + token : base + "/" + module$exports$ee$apiVersion.V1 + "/" + mapid + "/tiles/{z}/{x}/{y}";
  }
  return {mapid:mapid, token:token, formatTileUrl:function(x, y, z) {
    var width = Math.pow(2, z);
    x %= width;
    x = String(0 > x ? x + width : x);
    return urlFormat.replace("{x}", x).replace("{y}", y).replace("{z}", z);
  }, urlFormat:urlFormat};
};
ee.data.getFeatureViewTilesKey = function(params, opt_callback) {
  var visualizationExpression = params.visParams ? ee.data.expressionAugmenter_(ee.Serializer.encodeCloudApiExpression(params.visParams)) : null, map = new module$exports$eeapiclient$ee_api_client.FeatureView({name:null, asset:params.assetId, mapName:params.mapName, visualizationExpression:visualizationExpression}), call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.featureView().create(call.projectsPath(), map, {fields:["name"]}).then(function(response) {
    var token = response.name.split("/").pop(), rawTilesKey = token.substring(0, token.lastIndexOf("-"));
    return {token:token, formatTileUrl:function(x, y, z) {
      return module$contents$ee$apiclient_apiclient.getTileBaseUrl() + "/" + module$exports$ee$apiVersion.V1 + "/" + response.name + "/tiles/" + z + "/" + x + "/" + y;
    }, rawTilesKey:rawTilesKey};
  }));
};
goog.exportSymbol("ee.data.getFeatureViewTilesKey", ee.data.getFeatureViewTilesKey);
ee.data.listFeatures = function(asset, params, opt_callback) {
  var call = new module$contents$ee$apiclient_Call(opt_callback), name = ee.rpc_convert.assetIdToAssetName(asset);
  return call.handle(call.assets().listFeatures(name, params));
};
goog.exportSymbol("ee.data.listFeatures", ee.data.listFeatures);
ee.data.computeValue = function(obj, opt_callback) {
  var serializer = new ee.Serializer(!0), expression = ee.Serializer.encodeCloudApiExpressionWithSerializer(serializer, obj, void 0), extraMetadata = {}, sourceCodeNodes = serializer.encodeSourceCodeNodes(expression);
  Object.keys(sourceCodeNodes).length && (extraMetadata = {__source_code_nodes__:sourceCodeNodes});
  var request = {expression:ee.data.expressionAugmenter_(expression, extraMetadata)}, workloadTag = ee.data.getWorkloadTag();
  workloadTag && (request.workloadTag = workloadTag);
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.value().compute(call.projectsPath(), new module$exports$eeapiclient$ee_api_client.ComputeValueRequest(request)).then(function(x) {
    return x.result;
  }));
};
goog.exportSymbol("ee.data.computeValue", ee.data.computeValue);
ee.data.getThumbId = function(params, opt_callback) {
  if ("string" === typeof params.image) {
    throw Error("Image as JSON string not supported.");
  }
  if (void 0 !== params.version) {
    throw Error("Image version specification not supported.");
  }
  if (void 0 !== params.region) {
    throw Error('"region" not supported in call to ee.data.getThumbId. Use ee.Image.getThumbURL.');
  }
  if (void 0 !== params.dimensions) {
    throw Error('"dimensions" is not supported in call to ee.data.getThumbId. Use ee.Image.getThumbURL.');
  }
  var thumbnail = new module$exports$eeapiclient$ee_api_client.Thumbnail({name:null, expression:ee.data.expressionAugmenter_(ee.Serializer.encodeCloudApiExpression(params.image)), fileFormat:ee.rpc_convert.fileFormat(params.format), filenamePrefix:params.name, bandIds:ee.rpc_convert.bandList(params.bands), visualizationOptions:ee.rpc_convert.visualizationOptions(params), grid:null}), queryParams = {fields:"name"}, workloadTag = ee.data.getWorkloadTag();
  workloadTag && (queryParams.workloadTag = workloadTag);
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.thumbnails().create(call.projectsPath(), thumbnail, queryParams).then(function(response) {
    return {thumbid:response.name, token:""};
  }));
};
goog.exportSymbol("ee.data.getThumbId", ee.data.getThumbId);
ee.data.getVideoThumbId = function(params, opt_callback) {
  var videoOptions = new module$exports$eeapiclient$ee_api_client.VideoOptions({framesPerSecond:params.framesPerSecond || null, maxFrames:params.maxFrames || null, maxPixelsPerFrame:params.maxPixelsPerFrame || null}), request = new module$exports$eeapiclient$ee_api_client.VideoThumbnail({name:null, expression:ee.data.expressionAugmenter_(ee.Serializer.encodeCloudApiExpression(params.imageCollection)), fileFormat:ee.rpc_convert.fileFormat(params.format), 
  videoOptions:videoOptions, grid:null}), queryParams = {fields:"name"}, workloadTag = ee.data.getWorkloadTag();
  workloadTag && (queryParams.workloadTag = workloadTag);
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.videoThumbnails().create(call.projectsPath(), request, queryParams).then(function(response) {
    return {thumbid:response.name, token:""};
  }));
};
goog.exportSymbol("ee.data.getVideoThumbId", ee.data.getVideoThumbId);
ee.data.getFilmstripThumbId = function(params, opt_callback) {
  var request = new module$exports$eeapiclient$ee_api_client.FilmstripThumbnail({name:null, expression:ee.data.expressionAugmenter_(ee.Serializer.encodeCloudApiExpression(params.imageCollection)), fileFormat:ee.rpc_convert.fileFormat(params.format), orientation:ee.rpc_convert.orientation(params.orientation), grid:null}), queryParams = {fields:"name"}, workloadTag = ee.data.getWorkloadTag();
  workloadTag && (queryParams.workloadTag = workloadTag);
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.filmstripThumbnails().create(call.projectsPath(), request, queryParams).then(function(response) {
    return {thumbid:response.name, token:""};
  }));
};
goog.exportSymbol("ee.data.getFilmstripThumbId", ee.data.getFilmstripThumbId);
ee.data.makeThumbUrl = function(id) {
  return module$contents$ee$apiclient_apiclient.getTileBaseUrl() + "/" + module$exports$ee$apiVersion.V1 + "/" + id.thumbid + ":getPixels";
};
goog.exportSymbol("ee.data.makeThumbUrl", ee.data.makeThumbUrl);
ee.data.getDownloadId = function(params, opt_callback) {
  params = Object.assign({}, params);
  params.id && (params.image = new ee.Image(params.id));
  if ("string" === typeof params.image) {
    throw Error("Image as serialized JSON string not supported.");
  }
  if (!params.image) {
    throw Error("Missing ID or image parameter.");
  }
  params.filePerBand = !1 !== params.filePerBand;
  params.format = params.format || (params.filePerBand ? "ZIPPED_GEO_TIFF_PER_BAND" : "ZIPPED_GEO_TIFF");
  if (null != params.region && (null != params.scale || null != params.crs_transform) && null != params.dimensions) {
    throw Error("Cannot specify (bounding region, crs_transform/scale, dimensions) simultaneously.");
  }
  if ("string" === typeof params.bands) {
    try {
      params.bands = JSON.parse(params.bands);
    } catch (e) {
      params.bands = ee.rpc_convert.bandList(params.bands);
    }
  }
  if (params.bands && !Array.isArray(params.bands)) {
    throw Error("Bands parameter must be an array.");
  }
  params.bands && params.bands.every(function(band) {
    return "string" === typeof band;
  }) && (params.bands = params.bands.map(function(band) {
    return {id:band};
  }));
  if (params.bands && params.bands.some(function($jscomp$destructuring$var55) {
    return null == $jscomp$destructuring$var55.id;
  })) {
    throw Error("Each band dictionary must have an id.");
  }
  "string" === typeof params.region && (params.region = JSON.parse(params.region));
  if ("string" === typeof params.crs_transform) {
    try {
      params.crs_transform = JSON.parse(params.crs_transform);
    } catch (e) {
    }
  }
  var image = ee.data.images.buildDownloadIdImage(params.image, params), thumbnail = new module$exports$eeapiclient$ee_api_client.Thumbnail({name:null, expression:ee.data.expressionAugmenter_(ee.Serializer.encodeCloudApiExpression(image)), fileFormat:ee.rpc_convert.fileFormat(params.format), filenamePrefix:params.name, bandIds:params.bands && ee.rpc_convert.bandList(params.bands.map(function(band) {
    return band.id;
  })), grid:null}), queryParams = {fields:"name"}, workloadTag = ee.data.getWorkloadTag();
  workloadTag && (queryParams.workloadTag = workloadTag);
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.thumbnails().create(call.projectsPath(), thumbnail, queryParams).then(function(response) {
    return {docid:response.name, token:""};
  }));
};
goog.exportSymbol("ee.data.getDownloadId", ee.data.getDownloadId);
ee.data.makeDownloadUrl = function(id) {
  module$contents$ee$apiclient_apiclient.initialize();
  return module$contents$ee$apiclient_apiclient.getTileBaseUrl() + "/" + module$exports$ee$apiVersion.V1 + "/" + id.docid + ":getPixels";
};
goog.exportSymbol("ee.data.makeDownloadUrl", ee.data.makeDownloadUrl);
ee.data.getTableDownloadId = function(params, opt_callback) {
  var call = new module$contents$ee$apiclient_Call(opt_callback), fileFormat = ee.rpc_convert.tableFileFormat(params.format), expression = ee.data.expressionAugmenter_(ee.Serializer.encodeCloudApiExpression(params.table)), selectors = null;
  if (null != params.selectors) {
    if ("string" === typeof params.selectors) {
      selectors = params.selectors.split(",");
    } else if (Array.isArray(params.selectors) && params.selectors.every(function(x) {
      return "string" === typeof x;
    })) {
      selectors = params.selectors;
    } else {
      throw Error("'selectors' parameter must be an array of strings.");
    }
  }
  var table = new module$exports$eeapiclient$ee_api_client.Table({name:null, expression:expression, fileFormat:fileFormat, selectors:selectors, filename:params.filename || null}), queryParams = {fields:"name"}, workloadTag = ee.data.getWorkloadTag();
  workloadTag && (queryParams.workloadTag = workloadTag);
  return call.handle(call.tables().create(call.projectsPath(), table, queryParams).then(function(res) {
    return {docid:res.name || "", token:""};
  }));
};
goog.exportSymbol("ee.data.getTableDownloadId", ee.data.getTableDownloadId);
ee.data.makeTableDownloadUrl = function(id) {
  return module$contents$ee$apiclient_apiclient.getTileBaseUrl() + "/" + module$exports$ee$apiVersion.V1 + "/" + id.docid + ":getFeatures";
};
goog.exportSymbol("ee.data.makeTableDownloadUrl", ee.data.makeTableDownloadUrl);
ee.data.newTaskId = function(opt_count, opt_callback) {
  var rand = function(n) {
    return Math.floor(Math.random() * n);
  }, hex = function(d) {
    return rand(Math.pow(2, 4 * d)).toString(16).padStart(d, "0");
  }, variantPart = function() {
    return (8 + rand(4)).toString(16) + hex(3);
  }, uuids = module$contents$goog$array_range(opt_count || 1).map(function() {
    return [hex(8), hex(4), "4" + hex(3), variantPart(), hex(12)].join("-");
  });
  return opt_callback ? opt_callback(uuids) : uuids;
};
goog.exportSymbol("ee.data.newTaskId", ee.data.newTaskId);
ee.data.isOperationError_ = function(response) {
  return response.name && response.done && response.error;
};
ee.data.getTaskStatus = function(taskId, opt_callback) {
  var opNames = ee.data.makeStringArray_(taskId).map(ee.rpc_convert.taskIdToOperationName);
  if (1 === opNames.length) {
    var call = (new module$contents$ee$apiclient_Call(opt_callback)).withDetectPartialError(ee.data.isOperationError_);
    return call.handle(call.operations().get(opNames[0]).then(function(op) {
      return [ee.rpc_convert.operationToTask(op)];
    }));
  }
  var call$jscomp$0 = (new module$contents$ee$apiclient_BatchCall(opt_callback)).withDetectPartialError(ee.data.isOperationError_), operations = call$jscomp$0.operations();
  return call$jscomp$0.send(opNames.map(function(op) {
    return [op, operations.get(op)];
  }), function(data) {
    return opNames.map(function(id) {
      return ee.rpc_convert.operationToTask(data[id]);
    });
  });
};
goog.exportSymbol("ee.data.getTaskStatus", ee.data.getTaskStatus);
ee.data.makeStringArray_ = function(value) {
  if ("string" === typeof value) {
    return [value];
  }
  if (Array.isArray(value)) {
    return value;
  }
  throw Error("Invalid value: expected a string or an array of strings.");
};
ee.data.TASKLIST_PAGE_SIZE_ = 500;
ee.data.getTaskList = function(opt_callback) {
  return ee.data.getTaskListWithLimit(void 0, opt_callback);
};
goog.exportSymbol("ee.data.getTaskList", ee.data.getTaskList);
ee.data.getTaskListWithLimit = function(opt_limit, opt_callback) {
  var convert = function(ops) {
    return {tasks:ops.map(ee.rpc_convert.operationToTask)};
  };
  return opt_callback ? (ee.data.listOperations(opt_limit, function(v, e) {
    return opt_callback(v ? convert(v) : null, e);
  }), null) : convert(ee.data.listOperations(opt_limit));
};
goog.exportSymbol("ee.data.getTaskListWithLimit", ee.data.getTaskListWithLimit);
ee.data.listOperations = function(opt_limit, opt_callback) {
  var ops = [], truncatedOps = function() {
    return opt_limit ? ops.slice(0, opt_limit) : ops;
  }, params = {pageSize:ee.data.TASKLIST_PAGE_SIZE_}, getResponse = function(response) {
    module$contents$goog$array_extend(ops, response.operations || []);
    !response.nextPageToken || opt_limit && ops.length >= opt_limit ? opt_callback && opt_callback(truncatedOps()) : (params.pageToken = response.nextPageToken, call.handle(operations.list(call.projectsPath(), params).then(getResponse)));
    return null;
  }, call = new module$contents$ee$apiclient_Call(opt_callback ? function(value, err) {
    return err && opt_callback(value, err);
  } : void 0), operations = call.operations();
  call.handle(operations.list(call.projectsPath(), params).then(getResponse));
  return opt_callback ? null : truncatedOps();
};
goog.exportSymbol("ee.data.listOperations", ee.data.listOperations);
ee.data.cancelOperation = function(operationName, opt_callback) {
  var opNames = ee.data.makeStringArray_(operationName).map(ee.rpc_convert.taskIdToOperationName), request = new module$exports$eeapiclient$ee_api_client.CancelOperationRequest();
  if (1 === opNames.length) {
    var call = new module$contents$ee$apiclient_Call(opt_callback);
    call.handle(call.operations().cancel(opNames[0], request));
  } else {
    var call$jscomp$0 = new module$contents$ee$apiclient_BatchCall(opt_callback), operations = call$jscomp$0.operations();
    call$jscomp$0.send(opNames.map(function(op) {
      return [op, operations.cancel(op, request)];
    }));
  }
};
goog.exportSymbol("ee.data.cancelOperation", ee.data.cancelOperation);
ee.data.getOperation = function(operationName, opt_callback) {
  var opNames = ee.data.makeStringArray_(operationName).map(ee.rpc_convert.taskIdToOperationName);
  if (!Array.isArray(operationName)) {
    var call = (new module$contents$ee$apiclient_Call(opt_callback)).withDetectPartialError(ee.data.isOperationError_);
    return call.handle(call.operations().get(opNames[0]));
  }
  var call$jscomp$0 = (new module$contents$ee$apiclient_BatchCall(opt_callback)).withDetectPartialError(ee.data.isOperationError_), operations = call$jscomp$0.operations();
  return call$jscomp$0.send(opNames.map(function(op) {
    return [op, operations.get(op)];
  }));
};
goog.exportSymbol("ee.data.getOperation", ee.data.getOperation);
ee.data.cancelTask = function(taskId, opt_callback) {
  return ee.data.updateTask(taskId, ee.data.TaskUpdateActions.CANCEL, opt_callback);
};
goog.exportSymbol("ee.data.cancelTask", ee.data.cancelTask);
ee.data.updateTask = function(taskId, action, opt_callback) {
  if (!module$contents$goog$object_containsValue(ee.data.TaskUpdateActions, action)) {
    throw Error("Invalid action: " + action);
  }
  taskId = ee.data.makeStringArray_(taskId);
  var operations = taskId.map(ee.rpc_convert.taskIdToOperationName);
  ee.data.cancelOperation(operations, opt_callback);
  return null;
};
goog.exportSymbol("ee.data.updateTask", ee.data.updateTask);
ee.data.startProcessing = function(taskId, params, opt_callback) {
  params.id = taskId;
  var taskType = params.type, metadata = null != params.sourceUrl ? {__source_url__:params.sourceUrl} : {};
  if ("workloadTag" in params) {
    params.workloadTag || delete params.workloadTag;
  } else {
    var workloadTag = ee.data.getWorkloadTag();
    workloadTag && (params.workloadTag = workloadTag);
  }
  var call = new module$contents$ee$apiclient_Call(opt_callback), handle = function(response) {
    return call.handle(response.then(ee.rpc_convert.operationToProcessingResponse));
  };
  switch(taskType) {
    case ee.data.ExportType.IMAGE:
      var imageRequest = ee.data.prepareExportImageRequest_(params, metadata);
      return handle(call.image().export(call.projectsPath(), imageRequest));
    case ee.data.ExportType.TABLE:
      var tableRequest = ee.rpc_convert_batch.taskToExportTableRequest(params);
      tableRequest.expression = ee.data.expressionAugmenter_(tableRequest.expression, metadata);
      return handle(call.table().export(call.projectsPath(), tableRequest));
    case ee.data.ExportType.VIDEO:
      var videoRequest = ee.data.prepareExportVideoRequest_(params, metadata);
      return handle(call.video().export(call.projectsPath(), videoRequest));
    case ee.data.ExportType.MAP:
      var mapRequest = ee.data.prepareExportMapRequest_(params, metadata);
      return handle(call.map().export(call.projectsPath(), mapRequest));
    case ee.data.ExportType.VIDEO_MAP:
      var videoMapRequest = ee.data.prepareExportVideoMapRequest_(params, metadata);
      return handle(call.videoMap().export(call.projectsPath(), videoMapRequest));
    case ee.data.ExportType.CLASSIFIER:
      var classifierRequest = ee.data.prepareExportClassifierRequest_(params, metadata);
      return handle(call.classifier().export(call.projectsPath(), classifierRequest));
    default:
      throw Error("Unable to start processing for task of type " + taskType);
  }
};
goog.exportSymbol("ee.data.startProcessing", ee.data.startProcessing);
ee.data.prepareExportImageRequest_ = function(taskConfig, metadata) {
  var imageTask = ee.data.images.applyTransformsToImage(taskConfig), imageRequest = ee.rpc_convert_batch.taskToExportImageRequest(imageTask);
  imageRequest.expression = ee.data.expressionAugmenter_(imageRequest.expression, metadata);
  taskConfig.workloadTag && (imageRequest.workloadTag = taskConfig.workloadTag);
  return imageRequest;
};
ee.data.prepareExportVideoRequest_ = function(taskConfig, metadata) {
  var videoTask = ee.data.images.applyTransformsToCollection(taskConfig), videoRequest = ee.rpc_convert_batch.taskToExportVideoRequest(videoTask);
  videoRequest.expression = ee.data.expressionAugmenter_(videoRequest.expression, metadata);
  taskConfig.workloadTag && (videoRequest.workloadTag = taskConfig.workloadTag);
  return videoRequest;
};
ee.data.prepareExportMapRequest_ = function(taskConfig, metadata) {
  var scale = taskConfig.scale;
  delete taskConfig.scale;
  var mapTask = ee.data.images.applyTransformsToImage(taskConfig);
  mapTask.scale = scale;
  var mapRequest = ee.rpc_convert_batch.taskToExportMapRequest(mapTask);
  mapRequest.expression = ee.data.expressionAugmenter_(mapRequest.expression, metadata);
  taskConfig.workloadTag && (mapRequest.workloadTag = taskConfig.workloadTag);
  return mapRequest;
};
ee.data.prepareExportVideoMapRequest_ = function(taskConfig, metadata) {
  var scale = taskConfig.scale;
  delete taskConfig.scale;
  var videoMapTask = ee.data.images.applyTransformsToCollection(taskConfig);
  videoMapTask.scale = scale;
  var videoMapRequest = ee.rpc_convert_batch.taskToExportVideoMapRequest(videoMapTask);
  videoMapRequest.expression = ee.data.expressionAugmenter_(videoMapRequest.expression);
  taskConfig.workloadTag && (videoMapRequest.workloadTag = taskConfig.workloadTag);
  return videoMapRequest;
};
ee.data.prepareExportClassifierRequest_ = function(taskConfig, metadata) {
  var classifierRequest = ee.rpc_convert_batch.taskToExportClassifierRequest(taskConfig);
  classifierRequest.expression = ee.data.expressionAugmenter_(classifierRequest.expression, metadata);
  taskConfig.workloadTag && (classifierRequest.workloadTag = taskConfig.workloadTag);
  return classifierRequest;
};
ee.data.startIngestion = function(taskId, request, opt_callback) {
  var manifest = ee.rpc_convert.toImageManifest(request), convert = function(arg) {
    return arg ? ee.rpc_convert.operationToProcessingResponse(arg) : null;
  };
  return convert(ee.data.ingestImage(taskId, manifest, opt_callback && function(arg, err) {
    return opt_callback(convert(arg), err);
  }));
};
goog.exportSymbol("ee.data.startIngestion", ee.data.startIngestion);
ee.data.ingestImage = function(taskId, imageManifest, callback) {
  var request = new module$exports$eeapiclient$ee_api_client.ImportImageRequest({imageManifest:imageManifest, requestId:taskId, overwrite:null, description:null}), call = new module$contents$ee$apiclient_Call(callback, taskId ? void 0 : 0);
  return call.handle(call.image().import(call.projectsPath(), request));
};
ee.data.ingestTable = function(taskId, tableManifest, callback) {
  var request = new module$exports$eeapiclient$ee_api_client.ImportTableRequest({tableManifest:tableManifest, requestId:taskId, overwrite:null, description:null}), call = new module$contents$ee$apiclient_Call(callback, taskId ? void 0 : 0);
  return call.handle(call.table().import(call.projectsPath(), request));
};
ee.data.startTableIngestion = function(taskId, request, opt_callback) {
  var manifest = ee.rpc_convert.toTableManifest(request), convert = function(arg) {
    return arg ? ee.rpc_convert.operationToProcessingResponse(arg) : null;
  };
  return convert(ee.data.ingestTable(taskId, manifest, opt_callback && function(arg, err) {
    return opt_callback(convert(arg), err);
  }));
};
goog.exportSymbol("ee.data.startTableIngestion", ee.data.startTableIngestion);
ee.data.withSourceFrame = function(sourceFrameHook, body, thisObject) {
  var saved = ee.data.sourceFrameGenerator_;
  try {
    return ee.data.sourceFrameGenerator_ = sourceFrameHook, body.call(thisObject);
  } finally {
    ee.data.sourceFrameGenerator_ = saved;
  }
};
ee.data.getAsset = function(id, opt_callback) {
  var call = new module$contents$ee$apiclient_Call(opt_callback), name = ee.rpc_convert.assetIdToAssetName(id);
  return call.handle(call.assets().get(name, {prettyPrint:!1}).then(ee.rpc_convert.assetToLegacyResult));
};
goog.exportSymbol("ee.data.getAsset", ee.data.getAsset);
ee.data.getInfo = ee.data.getAsset;
goog.exportSymbol("ee.data.getInfo", ee.data.getInfo);
ee.data.makeListAssetsCall_ = function(parent, opt_params, opt_callback, opt_postProcessing) {
  opt_params = void 0 === opt_params ? {} : opt_params;
  opt_postProcessing = void 0 === opt_postProcessing ? goog.functions.identity : opt_postProcessing;
  var params = Object.assign({}, opt_params), call = new module$contents$ee$apiclient_Call(opt_callback), isProjectAssetRoot = ee.rpc_convert.CLOUD_ASSET_ROOT_RE.test(parent), methodRoot = isProjectAssetRoot ? call.projects() : call.assets();
  parent = isProjectAssetRoot ? ee.rpc_convert.projectParentFromPath(parent) : ee.rpc_convert.assetIdToAssetName(parent);
  var getNextPageIfNeeded = function(response) {
    if (null != params.pageSize || !response.nextPageToken) {
      return response;
    }
    var previousAssets = response.assets || [];
    params.pageToken = response.nextPageToken;
    var nextResponse = methodRoot.listAssets(parent, params).then(function(response) {
      response.assets = previousAssets.concat(response.assets);
      return response;
    }).then(getNextPageIfNeeded);
    return opt_callback ? nextResponse : call.handle(nextResponse);
  };
  return call.handle(methodRoot.listAssets(parent, params).then(getNextPageIfNeeded).then(opt_postProcessing));
};
ee.data.getList = function(params, opt_callback) {
  var convertedParams = ee.rpc_convert.getListToListAssets(params);
  convertedParams.pageSize || (convertedParams.pageSize = 1E3);
  return ee.data.makeListAssetsCall_(params.id, convertedParams, opt_callback, function(r) {
    return null == r ? null : ee.rpc_convert.listAssetsToGetList(r);
  });
};
goog.exportSymbol("ee.data.getList", ee.data.getList);
ee.data.listAssets = function(parent, opt_params, opt_callback) {
  opt_params = void 0 === opt_params ? {} : opt_params;
  return ee.data.makeListAssetsCall_(parent, opt_params, opt_callback);
};
goog.exportSymbol("ee.data.listAssets", ee.data.listAssets);
ee.data.listImages = function(parent, opt_params, opt_callback) {
  opt_params = void 0 === opt_params ? {} : opt_params;
  var params = ee.rpc_convert.processListImagesParams(opt_params);
  return ee.data.makeListAssetsCall_(parent, params, opt_callback, function(r) {
    if (null == r) {
      return null;
    }
    var listImagesResponse = {};
    r.assets && (listImagesResponse.images = r.assets);
    r.nextPageToken && (listImagesResponse.nextPageToken = r.nextPageToken);
    return listImagesResponse;
  });
};
goog.exportSymbol("ee.data.listImages", ee.data.listImages);
ee.data.listBuckets = function(project, opt_callback) {
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.projects().listAssets(project || call.projectsPath()));
};
goog.exportSymbol("ee.data.listBuckets", ee.data.listBuckets);
ee.data.getAssetRoots = function(opt_callback) {
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.projects().listAssets(call.projectsPath()).then(ee.rpc_convert.listAssetsToGetList));
};
goog.exportSymbol("ee.data.getAssetRoots", ee.data.getAssetRoots);
ee.data.createAssetHome = function(requestedId, opt_callback) {
  var parent = ee.rpc_convert.projectParentFromPath(requestedId), assetId = parent === "projects/" + module$contents$ee$apiclient_apiclient.DEFAULT_PROJECT_ ? requestedId : void 0, asset = new module$exports$eeapiclient$ee_api_client.EarthEngineAsset({type:"Folder"}), call = new module$contents$ee$apiclient_Call(opt_callback);
  call.handle(call.assets().create(parent, asset, {assetId:assetId}).then(ee.rpc_convert.assetToLegacyResult));
};
goog.exportSymbol("ee.data.createAssetHome", ee.data.createAssetHome);
ee.data.createAsset = function(value, opt_path, opt_force, opt_properties, opt_callback) {
  if (opt_force) {
    throw Error("Asset overwrite not supported.");
  }
  if ("string" === typeof value) {
    throw Error("Asset cannot be specified as string.");
  }
  var name = value.name || opt_path && ee.rpc_convert.assetIdToAssetName(opt_path);
  if (!name) {
    throw Error("Either asset name or opt_path must be specified.");
  }
  var split = name.indexOf("/assets/");
  if (-1 === split) {
    throw Error("Asset name must contain /assets/.");
  }
  value = Object.assign({}, value);
  value.tilestoreEntry && !value.tilestoreLocation && (value.tilestoreLocation = value.tilestoreEntry, delete value.tilestoreEntry);
  value.tilestoreLocation && (value.tilestoreLocation = new module$exports$eeapiclient$ee_api_client.TilestoreLocation(value.tilestoreLocation));
  value.gcsLocation && !value.cloudStorageLocation && (value.cloudStorageLocation = value.gcsLocation, delete value.gcsLocation);
  value.cloudStorageLocation && (value.cloudStorageLocation = new module$exports$eeapiclient$ee_api_client.CloudStorageLocation(value.cloudStorageLocation));
  opt_properties && !value.properties && (value.properties = Object.assign({}, opt_properties));
  for (var $jscomp$iter$49 = $jscomp.makeIterator(["title", "description"]), $jscomp$key$m1075644492$123$prop = $jscomp$iter$49.next(); !$jscomp$key$m1075644492$123$prop.done; $jscomp$key$m1075644492$123$prop = $jscomp$iter$49.next()) {
    var prop = $jscomp$key$m1075644492$123$prop.value;
    if (value[prop]) {
      var $jscomp$compprop17 = {};
      value.properties = Object.assign(($jscomp$compprop17[prop] = value[prop], $jscomp$compprop17), value.properties || {});
      delete value[prop];
    }
  }
  var asset = new module$exports$eeapiclient$ee_api_client.EarthEngineAsset(value), parent = name.slice(0, split), assetId = name.slice(split + 8);
  asset.id = null;
  asset.name = null;
  asset.type = ee.rpc_convert.assetTypeForCreate(asset.type);
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.assets().create(parent, asset, {assetId:assetId}).then(ee.rpc_convert.assetToLegacyResult));
};
goog.exportSymbol("ee.data.createAsset", ee.data.createAsset);
ee.data.createFolder = function(path, opt_force, opt_callback) {
  return ee.data.createAsset({type:"Folder"}, path, opt_force, void 0, opt_callback);
};
goog.exportSymbol("ee.data.createFolder", ee.data.createFolder);
ee.data.renameAsset = function(sourceId, destinationId, opt_callback) {
  var sourceName = ee.rpc_convert.assetIdToAssetName(sourceId), destinationName = ee.rpc_convert.assetIdToAssetName(destinationId), request = new module$exports$eeapiclient$ee_api_client.MoveAssetRequest({destinationName:destinationName}), call = new module$contents$ee$apiclient_Call(opt_callback);
  call.handle(call.assets().move(sourceName, request).then(ee.rpc_convert.assetToLegacyResult));
};
goog.exportSymbol("ee.data.renameAsset", ee.data.renameAsset);
ee.data.copyAsset = function(sourceId, destinationId, opt_overwrite, opt_callback) {
  var sourceName = ee.rpc_convert.assetIdToAssetName(sourceId), destinationName = ee.rpc_convert.assetIdToAssetName(destinationId), request = new module$exports$eeapiclient$ee_api_client.CopyAssetRequest({destinationName:destinationName, overwrite:null != opt_overwrite ? opt_overwrite : null}), call = new module$contents$ee$apiclient_Call(opt_callback);
  call.handle(call.assets().copy(sourceName, request).then(ee.rpc_convert.assetToLegacyResult));
};
goog.exportSymbol("ee.data.copyAsset", ee.data.copyAsset);
ee.data.deleteAsset = function(assetId, opt_callback) {
  var call = new module$contents$ee$apiclient_Call(opt_callback);
  call.handle(call.assets().delete(ee.rpc_convert.assetIdToAssetName(assetId)));
};
goog.exportSymbol("ee.data.deleteAsset", ee.data.deleteAsset);
ee.data.getAssetAcl = function(assetId, opt_callback) {
  var resource = ee.rpc_convert.assetIdToAssetName(assetId), request = new module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest(), call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.assets().getIamPolicy(resource, request, {prettyPrint:!1}).then(ee.rpc_convert.iamPolicyToAcl));
};
goog.exportSymbol("ee.data.getAssetAcl", ee.data.getAssetAcl);
ee.data.getIamPolicy = function(assetId, opt_callback) {
  var resource = ee.rpc_convert.assetIdToAssetName(assetId), request = new module$exports$eeapiclient$ee_api_client.GetIamPolicyRequest(), call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.assets().getIamPolicy(resource, request, {prettyPrint:!1}));
};
ee.data.setIamPolicy = function(assetId, policy, opt_callback) {
  var resource = ee.rpc_convert.assetIdToAssetName(assetId), request = new module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest({policy:policy}), call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.assets().setIamPolicy(resource, request, {prettyPrint:!1}));
};
ee.data.updateAsset = function(assetId, asset, updateFields, opt_callback) {
  var updateMask = (updateFields || []).join(","), request = new module$exports$eeapiclient$ee_api_client.UpdateAssetRequest({asset:asset, updateMask:updateMask}), call = new module$contents$ee$apiclient_Call(opt_callback);
  return call.handle(call.assets().patch(ee.rpc_convert.assetIdToAssetName(assetId), request).then(ee.rpc_convert.assetToLegacyResult));
};
goog.exportSymbol("ee.data.updateAsset", ee.data.updateAsset);
ee.data.setAssetAcl = function(assetId, aclUpdate, opt_callback) {
  var resource = ee.rpc_convert.assetIdToAssetName(assetId), policy = ee.rpc_convert.aclToIamPolicy(aclUpdate), request = new module$exports$eeapiclient$ee_api_client.SetIamPolicyRequest({policy:policy}), call = new module$contents$ee$apiclient_Call(opt_callback);
  call.handle(call.assets().setIamPolicy(resource, request, {prettyPrint:!1}));
};
goog.exportSymbol("ee.data.setAssetAcl", ee.data.setAssetAcl);
ee.data.setAssetProperties = function(assetId, properties, opt_callback) {
  var asset = ee.rpc_convert.legacyPropertiesToAssetUpdate(properties), updateFields = asset.getClassMetadata().keys.filter(function(k) {
    return "properties" !== k && asset.Serializable$has(k);
  }).map(function(str) {
    return str.replace(/([A-Z])/g, function(all, cap) {
      return "_" + cap.toLowerCase();
    });
  }).concat(Object.keys(asset.properties || {}).map(function(k) {
    return 'properties."' + k + '"';
  }));
  ee.data.updateAsset(assetId, asset, updateFields, opt_callback);
};
goog.exportSymbol("ee.data.setAssetProperties", ee.data.setAssetProperties);
ee.data.getAssetRootQuota = function(rootId, opt_callback) {
  var name = ee.rpc_convert.assetIdToAssetName(rootId), call = new module$contents$ee$apiclient_Call(opt_callback), assetsCall = call.assets(), validateParams = assetsCall.$apiClient.$validateParameter;
  assetsCall.$apiClient.$validateParameter = function(param, pattern) {
    "^projects\\/[^/]+\\/assets\\/.+$" === pattern.source && (pattern = RegExp("^projects/[^/]+/assets/.*$"));
    return validateParams(param, pattern);
  };
  var getAssetRequest = assetsCall.get(name, {prettyPrint:!1});
  return call.handle(getAssetRequest.then(function(asset) {
    if (!(asset instanceof module$exports$eeapiclient$ee_api_client.EarthEngineAsset && asset.quota)) {
      throw Error(rootId + " is not a root folder.");
    }
    return ee.rpc_convert.folderQuotaToAssetQuotaDetails(asset.quota);
  }));
};
goog.exportSymbol("ee.data.getAssetRootQuota", ee.data.getAssetRootQuota);
ee.data.WorkloadTag = function() {
  this.default = this.tag = "";
};
ee.data.WorkloadTag.prototype.get = function() {
  return this.tag;
};
ee.data.WorkloadTag.prototype.set = function(tag) {
  this.tag = this.validate(tag);
};
ee.data.WorkloadTag.prototype.setDefault = function(newDefault) {
  this.default = this.validate(newDefault);
};
ee.data.WorkloadTag.prototype.reset = function() {
  this.tag = this.default;
};
ee.data.WorkloadTag.prototype.validate = function(tag) {
  if (null == tag || "" === tag) {
    return "";
  }
  tag = String(tag);
  if (!/^([a-z0-9]|[a-z0-9][-_a-z0-9]{0,61}[a-z0-9])$/g.test(tag)) {
    throw Error('Invalid tag, "' + tag + '". Tags must be 1-63 characters, beginning and ending with a lowercase alphanumeric character ([a-z0-9]) with dashes (-), underscores (_), and lowercase alphanumerics between.');
  }
  return tag;
};
ee.data.WorkloadTag.getInstance = function() {
  return goog.singleton.getInstance(ee.data.WorkloadTag);
};
ee.data.getWorkloadTag = function() {
  return ee.data.WorkloadTag.getInstance().get();
};
goog.exportSymbol("ee.data.getWorkloadTag", ee.data.getWorkloadTag);
ee.data.setWorkloadTag = function(tag) {
  ee.data.WorkloadTag.getInstance().set(tag);
};
goog.exportSymbol("ee.data.setWorkloadTag", ee.data.setWorkloadTag);
ee.data.setDefaultWorkloadTag = function(tag) {
  ee.data.WorkloadTag.getInstance().setDefault(tag);
  ee.data.WorkloadTag.getInstance().set(tag);
};
goog.exportSymbol("ee.data.setDefaultWorkloadTag", ee.data.setDefaultWorkloadTag);
ee.data.resetWorkloadTag = function(opt_resetDefault) {
  opt_resetDefault && ee.data.WorkloadTag.getInstance().setDefault("");
  ee.data.WorkloadTag.getInstance().reset();
};
goog.exportSymbol("ee.data.resetWorkloadTag", ee.data.resetWorkloadTag);
ee.data.AssetType = {ALGORITHM:"Algorithm", CLASSIFIER:"Classifier", FEATURE_VIEW:"FeatureView", FOLDER:"Folder", FEATURE_COLLECTION:"FeatureCollection", IMAGE:"Image", IMAGE_COLLECTION:"ImageCollection", TABLE:"Table", UNKNOWN:"Unknown"};
ee.data.ExportType = {IMAGE:"EXPORT_IMAGE", MAP:"EXPORT_TILES", TABLE:"EXPORT_FEATURES", VIDEO:"EXPORT_VIDEO", VIDEO_MAP:"EXPORT_VIDEO_MAP", CLASSIFIER:"EXPORT_CLASSIFIER"};
ee.data.ExportState = {UNSUBMITTED:"UNSUBMITTED", READY:"READY", RUNNING:"RUNNING", COMPLETED:"COMPLETED", FAILED:"FAILED", CANCEL_REQUESTED:"CANCEL_REQUESTED", CANCELLED:"CANCELLED"};
ee.data.ExportDestination = {DRIVE:"DRIVE", GCS:"GOOGLE_CLOUD_STORAGE", ASSET:"ASSET", FEATURE_VIEW:"FEATURE_VIEW", BIGQUERY:"BIGQUERY"};
ee.data.ThinningStrategy = {GLOBALLY_CONSISTENT:"GLOBALLY_CONSISTENT", HIGHER_DENSITY:"HIGHER_DENSITY"};
ee.data.SystemPropertyPrefix = "system:";
ee.data.SystemTimeProperty = {START:"system:time_start", END:"system:time_end"};
ee.data.SYSTEM_ASSET_SIZE_PROPERTY = "system:asset_size";
ee.data.AssetDetailsProperty = {TITLE:"system:title", DESCRIPTION:"system:description", TAGS:"system:tags"};
ee.data.ALLOWED_DESCRIPTION_HTML_TABLE_ELEMENTS_ = "col colgroup caption table tbody td tfoot th thead tr".split(" ");
ee.data.ALLOWED_DESCRIPTION_HTML_ELEMENTS = ee.data.ALLOWED_DESCRIPTION_HTML_TABLE_ELEMENTS_.concat("a code em i li ol p strong sub sup ul".split(" "));
ee.data.ShortAssetDescription = function() {
};
ee.data.ListImagesResponse = function() {
};
ee.data.AssetAcl = function() {
};
ee.data.AssetAclUpdate = function() {
};
ee.data.AssetQuotaEntry = function() {
};
ee.data.AssetQuotaDetails = function() {
};
ee.data.sourceFrameGenerator_ = null;
ee.data.FeatureViewDescription = function() {
};
ee.data.FolderDescription = function() {
};
ee.data.FeatureCollectionDescription = function() {
};
ee.data.FeatureVisualizationParameters = function() {
};
ee.data.GeoJSONFeature = function() {
};
ee.data.GeoJSONGeometry = function() {
};
ee.data.GeoJSONGeometryCrs = function() {
};
ee.data.GeoJSONGeometryCrsProperties = function() {
};
ee.data.ImageCollectionDescription = function() {
};
ee.data.ImageDescription = function() {
};
ee.data.TableDescription = function() {
};
ee.data.TableDownloadParameters = function() {
};
ee.data.ImageVisualizationParameters = function() {
};
ee.data.FeatureViewVisualizationParameters = function() {
};
ee.data.ThumbnailOptions = function() {
};
$jscomp.inherits(ee.data.ThumbnailOptions, ee.data.ImageVisualizationParameters);
ee.data.VideoThumbnailOptions = function() {
};
$jscomp.inherits(ee.data.VideoThumbnailOptions, ee.data.ThumbnailOptions);
ee.data.FilmstripThumbnailOptions = function() {
};
$jscomp.inherits(ee.data.FilmstripThumbnailOptions, ee.data.ThumbnailOptions);
ee.data.BandDescription = function() {
};
ee.data.PixelTypeDescription = function() {
};
ee.data.AlgorithmSignature = function() {
};
ee.data.AlgorithmArgument = function() {
};
ee.data.ThumbnailId = function() {
};
ee.data.DownloadId = function() {
};
ee.data.RawMapId = function() {
};
ee.data.MapId = function() {
};
$jscomp.inherits(ee.data.MapId, ee.data.RawMapId);
ee.data.FeatureViewTilesKey = function() {
};
ee.data.MapZoomRange = {MIN:0, MAX:24};
ee.data.TaskStatus = function() {
};
ee.data.ProcessingResponse = function() {
};
ee.data.TaskListResponse = function() {
};
ee.data.TaskUpdateActions = {CANCEL:"CANCEL", UPDATE:"UPDATE"};
ee.data.AssetDescription = function() {
};
ee.data.IngestionRequest = function() {
};
ee.data.MissingData = function() {
};
ee.data.PyramidingPolicy = {MEAN:"MEAN", MODE:"MODE", MIN:"MIN", MAX:"MAX", SAMPLE:"SAMPLE"};
ee.data.Band = function() {
};
ee.data.Tileset = function() {
};
ee.data.FileBand = function() {
};
ee.data.FileSource = function() {
};
ee.data.TableIngestionRequest = function() {
};
ee.data.TableSource = function() {
};
$jscomp.inherits(ee.data.TableSource, ee.data.FileSource);
ee.data.AuthPrivateKey = function() {
};
ee.ComputedObject = function(func, args, opt_varName) {
  if (!(this instanceof ee.ComputedObject)) {
    return ee.ComputedObject.construct(ee.ComputedObject, arguments);
  }
  if (opt_varName && (func || args)) {
    throw Error('When "opt_varName" is specified, "func" and "args" must be null.');
  }
  if (func && !args) {
    throw Error('When "func" is specified, "args" must not be null.');
  }
  this.func = func;
  this.args = args;
  this.varName = opt_varName || null;
  this.sourceFrame = ee.data.getSourceFrame();
};
goog.inherits(ee.ComputedObject, ee.Encodable);
goog.exportSymbol("ee.ComputedObject", ee.ComputedObject);
ee.ComputedObject.prototype.getSourceFrame = function() {
  return this.sourceFrame;
};
ee.ComputedObject.prototype.evaluate = function(callback) {
  if (!callback || "function" !== typeof callback) {
    throw Error("evaluate() requires a callback function.");
  }
  ee.data.computeValue(this, callback);
};
goog.exportProperty(ee.ComputedObject.prototype, "evaluate", ee.ComputedObject.prototype.evaluate);
ee.ComputedObject.prototype.getInfo = function(opt_callback) {
  return ee.data.computeValue(this, opt_callback);
};
goog.exportProperty(ee.ComputedObject.prototype, "getInfo", ee.ComputedObject.prototype.getInfo);
ee.ComputedObject.prototype.encode = function(encoder) {
  if (this.isVariable()) {
    return {type:"ArgumentRef", value:this.varName};
  }
  var encodedArgs = {}, name;
  for (name in this.args) {
    void 0 !== this.args[name] && (encodedArgs[name] = encoder(this.args[name]));
  }
  var result = {type:"Invocation", arguments:encodedArgs}, func = encoder(this.func);
  result["string" === typeof func ? "functionName" : "function"] = func;
  return result;
};
ee.ComputedObject.prototype.encodeCloudValue = function(serializer) {
  if (this.isVariable()) {
    var name = this.varName || serializer.unboundName;
    if (!name) {
      throw Error("A mapped function's arguments cannot be used in client-side operations");
    }
    return ee.rpc_node.argumentReference(name);
  }
  var encodedArgs = {}, name$jscomp$0;
  for (name$jscomp$0 in this.args) {
    void 0 !== this.args[name$jscomp$0] && (encodedArgs[name$jscomp$0] = ee.rpc_node.reference(serializer.makeReference(this.args[name$jscomp$0])));
  }
  return "string" === typeof this.func ? ee.rpc_node.functionByName(String(this.func), encodedArgs) : this.func.encodeCloudInvocation(serializer, encodedArgs);
};
ee.ComputedObject.prototype.serialize = function(legacy) {
  return (void 0 === legacy ? 0 : legacy) ? ee.Serializer.toJSON(this) : ee.Serializer.toCloudApiJSON(this);
};
goog.exportProperty(ee.ComputedObject.prototype, "serialize", ee.ComputedObject.prototype.serialize);
ee.ComputedObject.prototype.toString = function() {
  return "ee." + this.name() + "(" + ee.Serializer.toReadableJSON(this) + ")";
};
goog.exportSymbol("ee.ComputedObject.prototype.toString", ee.ComputedObject.prototype.toString);
ee.ComputedObject.prototype.isVariable = function() {
  return null === this.func && null === this.args;
};
ee.ComputedObject.prototype.name = function() {
  return "ComputedObject";
};
ee.ComputedObject.prototype.aside = function(func, var_args) {
  var args = Array.from(arguments);
  args[0] = this;
  func.apply(goog.global, args);
  return this;
};
goog.exportProperty(ee.ComputedObject.prototype, "aside", ee.ComputedObject.prototype.aside);
ee.ComputedObject.prototype.castInternal = function(obj) {
  if (obj instanceof this.constructor) {
    return obj;
  }
  var klass = function() {
  };
  klass.prototype = this.constructor.prototype;
  var result = new klass();
  result.func = obj.func;
  result.args = obj.args;
  result.varName = obj.varName;
  return result;
};
ee.ComputedObject.construct = function(constructor, argsArray) {
  function F() {
    return constructor.apply(this, argsArray);
  }
  F.prototype = constructor.prototype;
  return new F();
};
ee.Types = {};
ee.Types.registeredClasses_ = {};
ee.Types.registerClasses = function(classes) {
  ee.Types.registeredClasses_ = classes;
};
ee.Types.nameToClass = function(name) {
  return name in ee.Types.registeredClasses_ ? ee.Types.registeredClasses_[name] : null;
};
ee.Types.classToName = function(klass) {
  return klass.prototype instanceof ee.ComputedObject ? klass.prototype.name.call(null) : klass == Number ? "Number" : klass == String ? "String" : klass == Array ? "Array" : klass == Date ? "Date" : "Object";
};
ee.Types.isSubtype = function(firstType, secondType) {
  if (secondType == firstType) {
    return !0;
  }
  switch(firstType) {
    case "Element":
      return "Element" == secondType || "Image" == secondType || "Feature" == secondType || "Collection" == secondType || "ImageCollection" == secondType || "FeatureCollection" == secondType;
    case "FeatureCollection":
    case "Collection":
      return "Collection" == secondType || "ImageCollection" == secondType || "FeatureCollection" == secondType;
    case "Object":
      return !0;
    default:
      return !1;
  }
};
ee.Types.isNumber = function(obj) {
  return "number" === typeof obj || obj instanceof ee.ComputedObject && "Number" == obj.name();
};
ee.Types.isString = function(obj) {
  return "string" === typeof obj || obj instanceof ee.ComputedObject && "String" == obj.name();
};
ee.Types.isArray = function(obj) {
  return Array.isArray(obj) || obj instanceof ee.ComputedObject && "List" == obj.name();
};
ee.Types.isRegularObject = function(obj) {
  if (goog.isObject(obj) && "function" !== typeof obj) {
    var proto = Object.getPrototypeOf(obj);
    return null !== proto && null === Object.getPrototypeOf(proto);
  }
  return !1;
};
ee.Types.useKeywordArgs = function(args, signature, isInstance) {
  isInstance = void 0 === isInstance ? !1 : isInstance;
  if (1 === args.length && ee.Types.isRegularObject(args[0])) {
    var formalArgs = signature.args;
    isInstance && (formalArgs = formalArgs.slice(1));
    if (formalArgs.length) {
      return !(1 === formalArgs.length || formalArgs[1].optional) || "Dictionary" !== formalArgs[0].type;
    }
  }
  return !1;
};
ee.Function = function() {
  if (!(this instanceof ee.Function)) {
    return new ee.Function();
  }
};
goog.inherits(ee.Function, ee.Encodable);
goog.exportSymbol("ee.Function", ee.Function);
ee.Function.promoter_ = goog.functions.identity;
ee.Function.registerPromoter = function(promoter) {
  ee.Function.promoter_ = promoter;
};
ee.Function.prototype.call = function(var_args) {
  return this.apply(this.nameArgs(Array.prototype.slice.call(arguments, 0)));
};
goog.exportProperty(ee.Function.prototype, "call", ee.Function.prototype.call);
ee.Function.prototype.apply = function(namedArgs) {
  var result = new ee.ComputedObject(this, this.promoteArgs(namedArgs));
  return ee.Function.promoter_(result, this.getReturnType());
};
goog.exportProperty(ee.Function.prototype, "apply", ee.Function.prototype.apply);
ee.Function.prototype.callOrApply = function(thisValue, args) {
  var isInstance = void 0 !== thisValue, signature = this.getSignature();
  if (ee.Types.useKeywordArgs(args, signature, isInstance)) {
    var namedArgs = module$contents$goog$object_clone(args[0]);
    if (isInstance) {
      var firstArgName = signature.args[0].name;
      if (firstArgName in namedArgs) {
        throw Error("Named args for " + signature.name + " can't contain keyword " + firstArgName);
      }
      namedArgs[firstArgName] = thisValue;
    }
  } else {
    namedArgs = this.nameArgs(isInstance ? [thisValue].concat(args) : args);
  }
  return this.apply(namedArgs);
};
ee.Function.prototype.promoteArgs = function(args) {
  for (var specs = this.getSignature().args, promotedArgs = {}, known = {}, i = 0; i < specs.length; i++) {
    var name = specs[i].name;
    if (name in args && void 0 !== args[name]) {
      promotedArgs[name] = ee.Function.promoter_(args[name], specs[i].type);
    } else if (!specs[i].optional) {
      throw Error("Required argument (" + name + ") missing to function: " + this);
    }
    known[name] = !0;
  }
  var unknown = [], argName;
  for (argName in args) {
    known[argName] || unknown.push(argName);
  }
  if (0 < unknown.length) {
    throw Error("Unrecognized arguments (" + unknown + ") to function: " + this);
  }
  return promotedArgs;
};
ee.Function.prototype.nameArgs = function(args) {
  var specs = this.getSignature().args;
  if (specs.length < args.length) {
    throw Error("Too many (" + args.length + ") arguments to function: " + this);
  }
  for (var namedArgs = {}, i = 0; i < args.length; i++) {
    namedArgs[specs[i].name] = args[i];
  }
  return namedArgs;
};
ee.Function.prototype.getReturnType = function() {
  return this.getSignature().returns;
};
ee.Function.prototype.toString = function(opt_name, opt_isInstance) {
  var signature = this.getSignature(), buffer = [];
  buffer.push(opt_name || signature.name);
  buffer.push("(");
  buffer.push(module$contents$goog$array_map(signature.args.slice(opt_isInstance ? 1 : 0), function(elem) {
    return elem.name;
  }).join(", "));
  buffer.push(")\n");
  buffer.push("\n");
  signature.description ? buffer.push(signature.description) : buffer.push("Undocumented.");
  buffer.push("\n");
  if (signature.args.length) {
    buffer.push("\nArgs:\n");
    for (var i = 0; i < signature.args.length; i++) {
      opt_isInstance && 0 == i ? buffer.push("  this:") : buffer.push("\n  ");
      var arg = signature.args[i];
      buffer.push(arg.name);
      buffer.push(" (");
      buffer.push(arg.type);
      arg.optional && buffer.push(", optional");
      buffer.push("): ");
      arg.description ? buffer.push(arg.description) : buffer.push("Undocumented.");
    }
  }
  return buffer.join("");
};
ee.Function.prototype.serialize = function(legacy) {
  return (void 0 === legacy ? 0 : legacy) ? ee.Serializer.toJSON(this) : ee.Serializer.toCloudApiJSON(this);
};
ee.ApiFunction = function(name, opt_signature) {
  if (void 0 === opt_signature) {
    return ee.ApiFunction.lookup(name);
  }
  if (!(this instanceof ee.ApiFunction)) {
    return ee.ComputedObject.construct(ee.ApiFunction, arguments);
  }
  this.signature_ = module$contents$goog$object_unsafeClone(opt_signature);
  this.signature_.name = name;
};
goog.inherits(ee.ApiFunction, ee.Function);
goog.exportSymbol("ee.ApiFunction", ee.ApiFunction);
ee.ApiFunction._call = function(name, var_args) {
  return ee.Function.prototype.call.apply(ee.ApiFunction.lookup(name), Array.prototype.slice.call(arguments, 1));
};
goog.exportSymbol("ee.ApiFunction._call", ee.ApiFunction._call);
ee.ApiFunction._apply = function(name, namedArgs) {
  return ee.ApiFunction.lookup(name).apply(namedArgs);
};
goog.exportSymbol("ee.ApiFunction._apply", ee.ApiFunction._apply);
ee.ApiFunction.prototype.encode = function(encoder) {
  return this.signature_.name;
};
ee.ApiFunction.prototype.encodeCloudInvocation = function(serializer, args) {
  return ee.rpc_node.functionByName(this.signature_.name, args);
};
ee.ApiFunction.prototype.getSignature = function() {
  return this.signature_;
};
ee.ApiFunction.api_ = null;
ee.ApiFunction.boundSignatures_ = {};
ee.ApiFunction.allSignatures = function() {
  ee.ApiFunction.initialize();
  return module$contents$goog$object_map(ee.ApiFunction.api_, function(func) {
    return func.getSignature();
  });
};
ee.ApiFunction.unboundFunctions = function() {
  ee.ApiFunction.initialize();
  return module$contents$goog$object_filter(ee.ApiFunction.api_, function(func, name) {
    return !ee.ApiFunction.boundSignatures_[name];
  });
};
ee.ApiFunction.lookup = function(name) {
  var func = ee.ApiFunction.lookupInternal(name);
  if (!func) {
    throw Error("Unknown built-in function name: " + name);
  }
  return func;
};
goog.exportSymbol("ee.ApiFunction.lookup", ee.ApiFunction.lookup);
ee.ApiFunction.lookupInternal = function(name) {
  ee.ApiFunction.initialize();
  return ee.ApiFunction.api_[name] || null;
};
ee.ApiFunction.initialize = function(opt_successCallback, opt_failureCallback) {
  if (ee.ApiFunction.api_) {
    opt_successCallback && opt_successCallback();
  } else {
    var callback = function(data, opt_error) {
      opt_error ? opt_failureCallback && opt_failureCallback(Error(opt_error)) : (ee.ApiFunction.api_ = module$contents$goog$object_map(data, function(sig, name) {
        sig.returns = sig.returns.replace(/<.*>/, "");
        for (var i = 0; i < sig.args.length; i++) {
          sig.args[i].type = sig.args[i].type.replace(/<.*>/, "");
        }
        return new ee.ApiFunction(name, sig);
      }), opt_successCallback && opt_successCallback());
    };
    opt_successCallback ? ee.data.getAlgorithms(callback) : callback(ee.data.getAlgorithms());
  }
};
ee.ApiFunction.reset = function() {
  ee.ApiFunction.api_ = null;
  ee.ApiFunction.boundSignatures_ = {};
};
ee.ApiFunction.importApi = function(target, prefix, typeName, opt_prepend) {
  ee.ApiFunction.initialize();
  var prepend = opt_prepend || "";
  module$contents$goog$object_forEach(ee.ApiFunction.api_, function(apiFunc, name) {
    var parts = name.split(".");
    if (2 == parts.length && parts[0] == prefix) {
      var fname = prepend + parts[1], signature = apiFunc.getSignature();
      ee.ApiFunction.boundSignatures_[name] = !0;
      var isInstance = !1;
      if (signature.args.length) {
        var firstArgType = signature.args[0].type;
        isInstance = "Object" != firstArgType && ee.Types.isSubtype(firstArgType, typeName);
      }
      var destination = isInstance ? target.prototype : target;
      fname in destination && !destination[fname].signature || (destination[fname] = function(var_args) {
        return apiFunc.callOrApply(isInstance ? this : void 0, Array.prototype.slice.call(arguments, 0));
      }, destination[fname].toString = goog.bind(apiFunc.toString, apiFunc, fname, isInstance), destination[fname].signature = signature);
    }
  });
};
ee.ApiFunction.clearApi = function(target) {
  var clear = function(target) {
    for (var name in target) {
      "function" === typeof target[name] && target[name].signature && delete target[name];
    }
  };
  clear(target);
  clear(target.prototype || {});
};
ee.arguments = {};
ee.arguments.extractFromFunction = function(fn, originalArgs) {
  return ee.arguments.extractImpl_(fn, originalArgs, ee.arguments.JS_PARAM_DECL_MATCHER_FUNCTION_);
};
ee.arguments.extractFromClassConstructor = function(fn, originalArgs) {
  return ee.arguments.extractImpl_(fn, originalArgs, ee.arguments.JS_PARAM_DECL_MATCHER_CLASS_CONSTRUCTOR_);
};
ee.arguments.extractFromClassMethod = function(fn, originalArgs) {
  return ee.arguments.extractImpl_(fn, originalArgs, ee.arguments.JS_PARAM_DECL_MATCHER_CLASS_METHOD_);
};
ee.arguments.extract = ee.arguments.extractFromFunction;
ee.arguments.extractImpl_ = function(fn, originalArgs, parameterMatcher) {
  var paramNamesWithOptPrefix = ee.arguments.getParamNames_(fn, parameterMatcher), paramNames = module$contents$goog$array_map(paramNamesWithOptPrefix, function(param) {
    return param.replace(/^opt_/, "");
  }), fnName = ee.arguments.getFnName_(fn), fnNameSnippet = fnName ? " to function " + fnName : "", args = {}, firstArg = originalArgs[0], firstArgCouldBeDictionary = goog.isObject(firstArg) && "function" !== typeof firstArg && !Array.isArray(firstArg) && "Object" === Object.getPrototypeOf(firstArg).constructor.name;
  if (1 < originalArgs.length || !firstArgCouldBeDictionary) {
    if (originalArgs.length > paramNames.length) {
      throw Error("Received too many arguments" + fnNameSnippet + ". Expected at most " + paramNames.length + " but got " + originalArgs.length + ".");
    }
    for (var i = 0; i < originalArgs.length; i++) {
      args[paramNames[i]] = originalArgs[i];
    }
  } else {
    var seen = new goog.structs.Set(module$contents$goog$object_getKeys(firstArg)), expected = new goog.structs.Set(paramNames);
    if (expected.intersection(seen).isEmpty()) {
      args[paramNames[0]] = originalArgs[0];
    } else {
      var unexpected = seen.difference(expected);
      if (0 !== unexpected.size) {
        throw Error("Unexpected arguments" + fnNameSnippet + ": " + Array.from(unexpected.values()).join(", "));
      }
      args = module$contents$goog$object_clone(firstArg);
    }
  }
  var provided = new goog.structs.Set(module$contents$goog$object_getKeys(args)), missing = (new goog.structs.Set(module$contents$goog$array_filter(paramNamesWithOptPrefix, function(param) {
    return !goog.string.startsWith(param, "opt_");
  }))).difference(provided);
  if (0 !== missing.size) {
    throw Error("Missing required arguments" + fnNameSnippet + ": " + Array.from(missing.values()).join(", "));
  }
  return args;
};
ee.arguments.getParamNames_ = function(fn, parameterMatcher) {
  var paramNames = [];
  if (goog.global.EXPORTED_FN_INFO) {
    var exportedFnInfo = goog.global.EXPORTED_FN_INFO[fn.toString()];
    goog.isObject(exportedFnInfo) || ee.arguments.throwMatchFailedError_();
    paramNames = exportedFnInfo.paramNames;
    Array.isArray(paramNames) || ee.arguments.throwMatchFailedError_();
  } else {
    var fnMatchResult = fn.toString().replace(ee.arguments.JS_COMMENT_MATCHER_, "").match(parameterMatcher);
    null === fnMatchResult && ee.arguments.throwMatchFailedError_();
    paramNames = (fnMatchResult[1].split(",") || []).map(function(p) {
      return p.replace(ee.arguments.JS_PARAM_DEFAULT_MATCHER_, "");
    });
  }
  return paramNames;
};
ee.arguments.getFnName_ = function(fn) {
  return goog.global.EXPORTED_FN_INFO ? goog.global.EXPORTED_FN_INFO[fn.toString()].name.split(".").pop() + "()" : null;
};
ee.arguments.throwMatchFailedError_ = function() {
  throw Error("Failed to locate function parameters.");
};
ee.arguments.JS_COMMENT_MATCHER_ = /((\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s))/mg;
ee.arguments.JS_PARAM_DECL_MATCHER_FUNCTION_ = /^function[^\(]*\(([^\)]*)\)/m;
ee.arguments.JS_PARAM_DECL_MATCHER_CLASS_CONSTRUCTOR_ = /^class[^\{]*{\S*?\bconstructor\(([^\)]*)\)/m;
ee.arguments.JS_PARAM_DECL_MATCHER_CLASS_METHOD_ = /[^\(]*\(([^\)]*)\)/m;
ee.arguments.JS_PARAM_DEFAULT_MATCHER_ = /=.*$/;
ee.Element = function(func, args, opt_varName) {
  ee.ComputedObject.call(this, func, args, opt_varName);
  ee.Element.initialize();
};
goog.inherits(ee.Element, ee.ComputedObject);
goog.exportSymbol("ee.Element", ee.Element);
ee.Element.initialized_ = !1;
ee.Element.initialize = function() {
  ee.Element.initialized_ || (ee.ApiFunction.importApi(ee.Element, "Element", "Element"), ee.Element.initialized_ = !0);
};
ee.Element.reset = function() {
  ee.ApiFunction.clearApi(ee.Element);
  ee.Element.initialized_ = !1;
};
ee.Element.prototype.name = function() {
  return "Element";
};
ee.Element.prototype.set = function(var_args) {
  if (1 >= arguments.length) {
    var properties = arguments[0];
    ee.Types.isRegularObject(properties) && module$contents$goog$array_equals(module$contents$goog$object_getKeys(properties), ["properties"]) && goog.isObject(properties.properties) && (properties = properties.properties);
    if (ee.Types.isRegularObject(properties)) {
      var result = this;
      for (var key in properties) {
        var value = properties[key];
        result = ee.ApiFunction._call("Element.set", result, key, value);
      }
    } else if (properties instanceof ee.ComputedObject && ee.ApiFunction.lookupInternal("Element.setMulti")) {
      result = ee.ApiFunction._call("Element.setMulti", this, properties);
    } else {
      throw Error("When Element.set() is passed one argument, it must be a dictionary.");
    }
  } else {
    if (0 != arguments.length % 2) {
      throw Error("When Element.set() is passed multiple arguments, there must be an even number of them.");
    }
    result = this;
    for (var i = 0; i < arguments.length; i += 2) {
      key = arguments[i], value = arguments[i + 1], result = ee.ApiFunction._call("Element.set", result, key, value);
    }
  }
  return this.castInternal(result);
};
goog.exportProperty(ee.Element.prototype, "set", ee.Element.prototype.set);
ee.Geometry = function(geoJson, opt_proj, opt_geodesic, opt_evenOdd) {
  if (!(this instanceof ee.Geometry)) {
    return ee.ComputedObject.construct(ee.Geometry, arguments);
  }
  if ("object" !== typeof geoJson || !("type" in geoJson)) {
    var args = ee.arguments.extractFromFunction(ee.Geometry, arguments);
    geoJson = args.geoJson;
    opt_proj = args.proj;
    opt_geodesic = args.geodesic;
    opt_evenOdd = args.evenOdd;
  }
  ee.Geometry.initialize();
  var options = null != opt_proj || null != opt_geodesic || null != opt_evenOdd;
  if (geoJson instanceof ee.ComputedObject && !(geoJson instanceof ee.Geometry && geoJson.type_)) {
    if (options) {
      throw Error("Setting the CRS, geodesic, or evenOdd flag on a computed Geometry is not supported.  Use Geometry.transform().");
    }
    ee.ComputedObject.call(this, geoJson.func, geoJson.args, geoJson.varName);
  } else {
    geoJson instanceof ee.Geometry && (geoJson = geoJson.encode());
    if (!ee.Geometry.isValidGeometry_(geoJson)) {
      throw Error("Invalid GeoJSON geometry: " + JSON.stringify(geoJson));
    }
    ee.ComputedObject.call(this, null, null);
    this.type_ = geoJson.type;
    this.coordinates_ = null != geoJson.coordinates ? module$contents$goog$object_unsafeClone(geoJson.coordinates) : null;
    this.geometries_ = geoJson.geometries || null;
    if (null != opt_proj) {
      this.proj_ = opt_proj;
    } else if ("crs" in geoJson) {
      if (goog.isObject(geoJson.crs) && "name" == geoJson.crs.type && goog.isObject(geoJson.crs.properties) && "string" === typeof geoJson.crs.properties.name) {
        this.proj_ = geoJson.crs.properties.name;
      } else {
        throw Error("Invalid CRS declaration in GeoJSON: " + (new goog.json.Serializer()).serialize(geoJson.crs));
      }
    }
    this.geodesic_ = opt_geodesic;
    void 0 === this.geodesic_ && "geodesic" in geoJson && (this.geodesic_ = !!geoJson.geodesic);
    this.evenOdd_ = opt_evenOdd;
    void 0 === this.evenOdd_ && "evenOdd" in geoJson && (this.evenOdd_ = !!geoJson.evenOdd);
  }
};
goog.inherits(ee.Geometry, ee.ComputedObject);
goog.exportSymbol("ee.Geometry", ee.Geometry);
ee.Geometry.initialized_ = !1;
ee.Geometry.initialize = function() {
  ee.Geometry.initialized_ || (ee.ApiFunction.importApi(ee.Geometry, "Geometry", "Geometry"), ee.Geometry.initialized_ = !0);
};
ee.Geometry.reset = function() {
  ee.ApiFunction.clearApi(ee.Geometry);
  ee.Geometry.initialized_ = !1;
};
ee.Geometry.Point = function(coords, opt_proj) {
  if (!(this instanceof ee.Geometry.Point)) {
    return ee.Geometry.createInstance_(ee.Geometry.Point, arguments);
  }
  var init = ee.Geometry.construct_(ee.Geometry.Point, "Point", 1, arguments);
  if (!(init instanceof ee.ComputedObject)) {
    var xy = init.coordinates;
    if (!Array.isArray(xy) || 2 != xy.length) {
      throw Error("The Geometry.Point constructor requires 2 coordinates.");
    }
  }
  ee.Geometry.call(this, init);
};
goog.inherits(ee.Geometry.Point, ee.Geometry);
goog.exportProperty(ee.Geometry, "Point", ee.Geometry.Point);
ee.Geometry.MultiPoint = function(coords, opt_proj) {
  if (!(this instanceof ee.Geometry.MultiPoint)) {
    return ee.Geometry.createInstance_(ee.Geometry.MultiPoint, arguments);
  }
  ee.Geometry.call(this, ee.Geometry.construct_(ee.Geometry.MultiPoint, "MultiPoint", 2, arguments));
};
goog.inherits(ee.Geometry.MultiPoint, ee.Geometry);
goog.exportProperty(ee.Geometry, "MultiPoint", ee.Geometry.MultiPoint);
ee.Geometry.Rectangle = function(coords, opt_proj, opt_geodesic, opt_evenOdd) {
  if (!(this instanceof ee.Geometry.Rectangle)) {
    return ee.Geometry.createInstance_(ee.Geometry.Rectangle, arguments);
  }
  var init = ee.Geometry.construct_(ee.Geometry.Rectangle, "Rectangle", 2, arguments);
  if (!(init instanceof ee.ComputedObject)) {
    var xy = init.coordinates;
    if (2 != xy.length) {
      throw Error("The Geometry.Rectangle constructor requires 2 points or 4 coordinates.");
    }
    var x1 = xy[0][0], y1 = xy[0][1], x2 = xy[1][0], y2 = xy[1][1];
    init.coordinates = [[[x1, y2], [x1, y1], [x2, y1], [x2, y2]]];
    init.type = "Polygon";
  }
  ee.Geometry.call(this, init);
};
goog.inherits(ee.Geometry.Rectangle, ee.Geometry);
goog.exportProperty(ee.Geometry, "Rectangle", ee.Geometry.Rectangle);
ee.Geometry.BBox = function(west, south, east, north) {
  if (!(this instanceof ee.Geometry.BBox)) {
    return ee.Geometry.createInstance_(ee.Geometry.BBox, arguments);
  }
  var args = ee.arguments.extractFromFunction(ee.Geometry.BBox, arguments);
  west = args.west;
  south = args.south;
  east = args.east;
  north = args.north;
  var coordinates = [west, south, east, north];
  if (ee.Geometry.hasServerValue_(coordinates)) {
    var $jscomp$spread$args12;
    return ($jscomp$spread$args12 = new ee.ApiFunction("GeometryConstructors.BBox")).call.apply($jscomp$spread$args12, $jscomp.arrayFromIterable(coordinates));
  }
  if (!(Infinity > west)) {
    throw Error("Geometry.BBox: west must not be " + west);
  }
  if (!(-Infinity < east)) {
    throw Error("Geometry.BBox: east must not be " + east);
  }
  if (!(90 >= south)) {
    throw Error("Geometry.BBox: south must be at most +90\u00b0, but was " + south + "\u00b0");
  }
  if (!(-90 <= north)) {
    throw Error("Geometry.BBox: north must be at least -90\u00b0, but was " + north + "\u00b0");
  }
  south = Math.max(south, -90);
  north = Math.min(north, 90);
  360 <= east - west ? (west = -180, east = 180) : (west = ee.Geometry.canonicalizeLongitude_(west), east = ee.Geometry.canonicalizeLongitude_(east), east < west && (east += 360));
  ee.Geometry.call(this, {type:"Polygon", coordinates:[[[west, north], [west, south], [east, south], [east, north]]]}, void 0, !1, !0);
};
goog.inherits(ee.Geometry.BBox, ee.Geometry.Rectangle);
goog.exportProperty(ee.Geometry, "BBox", ee.Geometry.BBox);
ee.Geometry.canonicalizeLongitude_ = function(longitude) {
  longitude %= 360;
  180 < longitude ? longitude -= 360 : -180 > longitude && (longitude += 360);
  return longitude;
};
ee.Geometry.LineString = function(coords, opt_proj, opt_geodesic, opt_maxError) {
  if (!(this instanceof ee.Geometry.LineString)) {
    return ee.Geometry.createInstance_(ee.Geometry.LineString, arguments);
  }
  ee.Geometry.call(this, ee.Geometry.construct_(ee.Geometry.LineString, "LineString", 2, arguments));
};
goog.inherits(ee.Geometry.LineString, ee.Geometry);
goog.exportProperty(ee.Geometry, "LineString", ee.Geometry.LineString);
ee.Geometry.LinearRing = function(coords, opt_proj, opt_geodesic, opt_maxError) {
  if (!(this instanceof ee.Geometry.LinearRing)) {
    return ee.Geometry.createInstance_(ee.Geometry.LinearRing, arguments);
  }
  ee.Geometry.call(this, ee.Geometry.construct_(ee.Geometry.LinearRing, "LinearRing", 2, arguments));
};
goog.inherits(ee.Geometry.LinearRing, ee.Geometry);
goog.exportProperty(ee.Geometry, "LinearRing", ee.Geometry.LinearRing);
ee.Geometry.MultiLineString = function(coords, opt_proj, opt_geodesic, opt_maxError) {
  if (!(this instanceof ee.Geometry.MultiLineString)) {
    return ee.Geometry.createInstance_(ee.Geometry.MultiLineString, arguments);
  }
  ee.Geometry.call(this, ee.Geometry.construct_(ee.Geometry.MultiLineString, "MultiLineString", 3, arguments));
};
goog.inherits(ee.Geometry.MultiLineString, ee.Geometry);
goog.exportProperty(ee.Geometry, "MultiLineString", ee.Geometry.MultiLineString);
ee.Geometry.Polygon = function(coords, opt_proj, opt_geodesic, opt_maxError, opt_evenOdd) {
  if (!(this instanceof ee.Geometry.Polygon)) {
    return ee.Geometry.createInstance_(ee.Geometry.Polygon, arguments);
  }
  ee.Geometry.call(this, ee.Geometry.construct_(ee.Geometry.Polygon, "Polygon", 3, arguments));
};
goog.inherits(ee.Geometry.Polygon, ee.Geometry);
goog.exportProperty(ee.Geometry, "Polygon", ee.Geometry.Polygon);
ee.Geometry.MultiPolygon = function(coords, opt_proj, opt_geodesic, opt_maxError, opt_evenOdd) {
  if (!(this instanceof ee.Geometry.MultiPolygon)) {
    return ee.Geometry.createInstance_(ee.Geometry.MultiPolygon, arguments);
  }
  ee.Geometry.call(this, ee.Geometry.construct_(ee.Geometry.MultiPolygon, "MultiPolygon", 4, arguments));
};
goog.inherits(ee.Geometry.MultiPolygon, ee.Geometry);
goog.exportProperty(ee.Geometry, "MultiPolygon", ee.Geometry.MultiPolygon);
ee.Geometry.prototype.encode = function(opt_encoder) {
  if (!this.type_) {
    if (!opt_encoder) {
      throw Error("Must specify an encode function when encoding a computed geometry.");
    }
    return ee.ComputedObject.prototype.encode.call(this, opt_encoder);
  }
  var result = {type:this.type_};
  "GeometryCollection" == this.type_ ? result.geometries = this.geometries_ : result.coordinates = this.coordinates_;
  null != this.proj_ && (result.crs = {type:"name", properties:{name:this.proj_}});
  null != this.geodesic_ && (result.geodesic = this.geodesic_);
  null != this.evenOdd_ && (result.evenOdd = this.evenOdd_);
  return result;
};
ee.Geometry.prototype.toGeoJSON = function() {
  if (this.func) {
    throw Error("Can't convert a computed Geometry to GeoJSON. Use evaluate() instead.");
  }
  return this.encode();
};
goog.exportProperty(ee.Geometry.prototype, "toGeoJSON", ee.Geometry.prototype.toGeoJSON);
ee.Geometry.prototype.toGeoJSONString = function() {
  if (this.func) {
    throw Error("Can't convert a computed Geometry to GeoJSON. Use evaluate() instead.");
  }
  return (new goog.json.Serializer()).serialize(this.toGeoJSON());
};
goog.exportProperty(ee.Geometry.prototype, "toGeoJSONString", ee.Geometry.prototype.toGeoJSONString);
ee.Geometry.prototype.serialize = function(legacy) {
  return (void 0 === legacy ? 0 : legacy) ? ee.Serializer.toJSON(this) : ee.Serializer.toCloudApiJSON(this);
};
goog.exportProperty(ee.Geometry.prototype, "serialize", ee.Geometry.prototype.serialize);
ee.Geometry.prototype.toString = function() {
  return "ee.Geometry(" + this.toGeoJSONString() + ")";
};
ee.Geometry.prototype.encodeCloudValue = function(serializer) {
  if (!this.type_) {
    if (!serializer) {
      throw Error("Must specify a serializer when encoding a computed geometry.");
    }
    return ee.ComputedObject.prototype.encodeCloudValue.call(this, serializer);
  }
  var args = {}, func = "";
  "GeometryCollection" === this.type_ ? (args.geometries = this.geometries_.map(function(geometry) {
    return new ee.Geometry(geometry);
  }), func = "GeometryConstructors.MultiGeometry") : (args.coordinates = this.coordinates_, func = "GeometryConstructors." + this.type_);
  null != this.proj_ && (args.crs = "string" === typeof this.proj_ ? (new ee.ApiFunction("Projection")).call(this.proj_) : this.proj_);
  var acceptsGeodesicArg = "Point" !== this.type_ && "MultiPoint" !== this.type_;
  null != this.geodesic_ && acceptsGeodesicArg && (args.geodesic = this.geodesic_);
  null != this.evenOdd_ && (args.evenOdd = this.evenOdd_);
  return (new ee.ApiFunction(func)).apply(args).encodeCloudValue(serializer);
};
ee.Geometry.isValidGeometry_ = function(geometry) {
  var type = geometry.type;
  if ("GeometryCollection" == type) {
    var geometries = geometry.geometries;
    if (!Array.isArray(geometries)) {
      return !1;
    }
    for (var i = 0; i < geometries.length; i++) {
      if (!ee.Geometry.isValidGeometry_(geometries[i])) {
        return !1;
      }
    }
    return !0;
  }
  var coords = geometry.coordinates, nesting = ee.Geometry.isValidCoordinates_(coords);
  return "Point" == type && 1 == nesting || "MultiPoint" == type && (2 == nesting || 0 == coords.length) || "LineString" == type && 2 == nesting || "LinearRing" == type && 2 == nesting || "MultiLineString" == type && (3 == nesting || 0 == coords.length) || "Polygon" == type && 3 == nesting || "MultiPolygon" == type && (4 == nesting || 0 == coords.length);
};
ee.Geometry.isValidCoordinates_ = function(shape) {
  if (!Array.isArray(shape)) {
    return -1;
  }
  if (Array.isArray(shape[0])) {
    for (var count = ee.Geometry.isValidCoordinates_(shape[0]), i = 1; i < shape.length; i++) {
      if (ee.Geometry.isValidCoordinates_(shape[i]) != count) {
        return -1;
      }
    }
    return count + 1;
  }
  for (i = 0; i < shape.length; i++) {
    if ("number" !== typeof shape[i]) {
      return -1;
    }
  }
  return 0 == shape.length % 2 ? 1 : -1;
};
ee.Geometry.coordinatesToLine_ = function(coordinates) {
  if ("number" !== typeof coordinates[0] || 2 == coordinates.length) {
    return coordinates;
  }
  if (0 != coordinates.length % 2) {
    throw Error("Invalid number of coordinates: " + coordinates.length);
  }
  for (var line = [], i = 0; i < coordinates.length; i += 2) {
    line.push([coordinates[i], coordinates[i + 1]]);
  }
  return line;
};
ee.Geometry.construct_ = function(jsConstructorFn, apiConstructorName, depth, originalArgs) {
  var eeArgs = ee.Geometry.getEeApiArgs_(jsConstructorFn, originalArgs);
  if (ee.Geometry.hasServerValue_(eeArgs.coordinates) || null != eeArgs.crs || null != eeArgs.maxError) {
    return (new ee.ApiFunction("GeometryConstructors." + apiConstructorName)).apply(eeArgs);
  }
  eeArgs.type = apiConstructorName;
  eeArgs.coordinates = ee.Geometry.fixDepth_(depth, eeArgs.coordinates);
  var isPolygon = module$contents$goog$array_contains(["Polygon", "Rectangle", "MultiPolygon"], apiConstructorName);
  isPolygon && null == eeArgs.evenOdd && (eeArgs.evenOdd = !0);
  if (isPolygon && !1 === eeArgs.geodesic && !1 === eeArgs.evenOdd) {
    throw Error("Planar interiors must be even/odd.");
  }
  return eeArgs;
};
ee.Geometry.getEeApiArgs_ = function(jsConstructorFn, originalArgs) {
  if (module$contents$goog$array_every(originalArgs, ee.Types.isNumber)) {
    return {coordinates:module$contents$goog$array_toArray(originalArgs)};
  }
  var args = ee.arguments.extractFromFunction(jsConstructorFn, originalArgs);
  args.coordinates = args.coords;
  delete args.coords;
  args.crs = args.proj;
  delete args.proj;
  return module$contents$goog$object_filter(args, function(x) {
    return null != x;
  });
};
ee.Geometry.hasServerValue_ = function(coordinates) {
  return Array.isArray(coordinates) ? module$contents$goog$array_some(coordinates, ee.Geometry.hasServerValue_) : coordinates instanceof ee.ComputedObject;
};
ee.Geometry.fixDepth_ = function(depth, coords) {
  if (1 > depth || 4 < depth) {
    throw Error("Unexpected nesting level.");
  }
  module$contents$goog$array_every(coords, function(x) {
    return "number" === typeof x;
  }) && (coords = ee.Geometry.coordinatesToLine_(coords));
  for (var item = coords, count = 0; Array.isArray(item);) {
    item = item[0], count++;
  }
  for (; count < depth;) {
    coords = [coords], count++;
  }
  if (ee.Geometry.isValidCoordinates_(coords) != depth) {
    throw Error("Invalid geometry");
  }
  for (item = coords; Array.isArray(item) && 1 == item.length;) {
    item = item[0];
  }
  return Array.isArray(item) && 0 == item.length ? [] : coords;
};
ee.Geometry.createInstance_ = function(klass, args) {
  var f = function() {
  };
  f.prototype = klass.prototype;
  var instance = new f(), result = klass.apply(instance, args);
  return void 0 !== result ? result : instance;
};
ee.Geometry.prototype.name = function() {
  return "Geometry";
};
ee.Filter = function(opt_filter) {
  if (!(this instanceof ee.Filter)) {
    return ee.ComputedObject.construct(ee.Filter, arguments);
  }
  if (opt_filter instanceof ee.Filter) {
    return opt_filter;
  }
  ee.Filter.initialize();
  if (Array.isArray(opt_filter)) {
    if (0 == opt_filter.length) {
      throw Error("Empty list specified for ee.Filter().");
    }
    if (1 == opt_filter.length) {
      return new ee.Filter(opt_filter[0]);
    }
    ee.ComputedObject.call(this, new ee.ApiFunction("Filter.and"), {filters:opt_filter});
    this.filter_ = opt_filter;
  } else if (opt_filter instanceof ee.ComputedObject) {
    ee.ComputedObject.call(this, opt_filter.func, opt_filter.args, opt_filter.varName), this.filter_ = [opt_filter];
  } else if (void 0 === opt_filter) {
    ee.ComputedObject.call(this, null, null), this.filter_ = [];
  } else {
    throw Error("Invalid argument specified for ee.Filter(): " + opt_filter);
  }
};
goog.inherits(ee.Filter, ee.ComputedObject);
goog.exportSymbol("ee.Filter", ee.Filter);
ee.Filter.initialized_ = !1;
ee.Filter.initialize = function() {
  ee.Filter.initialized_ || (ee.ApiFunction.importApi(ee.Filter, "Filter", "Filter"), ee.Filter.initialized_ = !0);
};
ee.Filter.reset = function() {
  ee.ApiFunction.clearApi(ee.Filter);
  ee.Filter.initialized_ = !1;
};
ee.Filter.functionNames_ = {equals:"equals", less_than:"lessThan", greater_than:"greaterThan", contains:"stringContains", starts_with:"stringStartsWith", ends_with:"stringEndsWith"};
ee.Filter.prototype.append_ = function(newFilter) {
  var prev = this.filter_.slice(0);
  newFilter instanceof ee.Filter ? module$contents$goog$array_extend(prev, newFilter.filter_) : newFilter instanceof Array ? module$contents$goog$array_extend(prev, newFilter) : prev.push(newFilter);
  return new ee.Filter(prev);
};
ee.Filter.prototype.not = function() {
  return ee.ApiFunction._call("Filter.not", this);
};
goog.exportProperty(ee.Filter.prototype, "not", ee.Filter.prototype.not);
ee.Filter.eq = function(name, value) {
  var args = ee.arguments.extractFromFunction(ee.Filter.eq, arguments);
  return ee.ApiFunction._call("Filter.equals", args.name, args.value);
};
goog.exportProperty(ee.Filter, "eq", ee.Filter.eq);
ee.Filter.neq = function(name, value) {
  var args = ee.arguments.extractFromFunction(ee.Filter.neq, arguments);
  return ee.Filter.eq(args.name, args.value).not();
};
goog.exportProperty(ee.Filter, "neq", ee.Filter.neq);
ee.Filter.lt = function(name, value) {
  var args = ee.arguments.extractFromFunction(ee.Filter.lt, arguments);
  return ee.ApiFunction._call("Filter.lessThan", args.name, args.value);
};
goog.exportProperty(ee.Filter, "lt", ee.Filter.lt);
ee.Filter.gte = function(name, value) {
  var args = ee.arguments.extractFromFunction(ee.Filter.gte, arguments);
  return ee.Filter.lt(args.name, args.value).not();
};
goog.exportProperty(ee.Filter, "gte", ee.Filter.gte);
ee.Filter.gt = function(name, value) {
  var args = ee.arguments.extractFromFunction(ee.Filter.gt, arguments);
  return ee.ApiFunction._call("Filter.greaterThan", args.name, args.value);
};
goog.exportProperty(ee.Filter, "gt", ee.Filter.gt);
ee.Filter.lte = function(name, value) {
  var args = ee.arguments.extractFromFunction(ee.Filter.lte, arguments);
  return ee.Filter.gt(args.name, args.value).not();
};
goog.exportProperty(ee.Filter, "lte", ee.Filter.lte);
ee.Filter.and = function(var_args) {
  var args = Array.prototype.slice.call(arguments);
  return ee.ApiFunction._call("Filter.and", args);
};
goog.exportProperty(ee.Filter, "and", ee.Filter.and);
ee.Filter.or = function(var_args) {
  var args = Array.prototype.slice.call(arguments);
  return ee.ApiFunction._call("Filter.or", args);
};
goog.exportProperty(ee.Filter, "or", ee.Filter.or);
ee.Filter.date = function(start, opt_end) {
  var args = ee.arguments.extractFromFunction(ee.Filter.date, arguments), range = ee.ApiFunction._call("DateRange", args.start, args.end);
  return ee.ApiFunction._apply("Filter.dateRangeContains", {leftValue:range, rightField:"system:time_start"});
};
goog.exportProperty(ee.Filter, "date", ee.Filter.date);
ee.Filter.inList = function(opt_leftField, opt_rightValue, opt_rightField, opt_leftValue) {
  var args = ee.arguments.extractFromFunction(ee.Filter.inList, arguments);
  return ee.ApiFunction._apply("Filter.listContains", {leftField:args.rightField, rightValue:args.leftValue, rightField:args.leftField, leftValue:args.rightValue});
};
goog.exportProperty(ee.Filter, "inList", ee.Filter.inList);
ee.Filter.bounds = function(geometry, opt_errorMargin) {
  return ee.ApiFunction._apply("Filter.intersects", {leftField:".all", rightValue:ee.ApiFunction._call("Feature", geometry), maxError:opt_errorMargin});
};
goog.exportProperty(ee.Filter, "bounds", ee.Filter.bounds);
ee.Filter.prototype.name = function() {
  return "Filter";
};
ee.Filter.metadata = function(name, operator, value) {
  operator = operator.toLowerCase();
  var negated = !1;
  goog.string.startsWith(operator, "not_") && (negated = !0, operator = operator.substring(4));
  if (!(operator in ee.Filter.functionNames_)) {
    throw Error("Unknown filtering operator: " + operator);
  }
  var filter = ee.ApiFunction._call("Filter." + ee.Filter.functionNames_[operator], name, value);
  return negated ? filter.not() : filter;
};
goog.exportProperty(ee.Filter, "metadata", ee.Filter.metadata);
ee.Collection = function(func, args, opt_varName) {
  ee.Element.call(this, func, args, opt_varName);
  ee.Collection.initialize();
};
goog.inherits(ee.Collection, ee.Element);
goog.exportSymbol("ee.Collection", ee.Collection);
ee.Collection.initialized_ = !1;
ee.Collection.initialize = function() {
  ee.Collection.initialized_ || (ee.ApiFunction.importApi(ee.Collection, "Collection", "Collection"), ee.ApiFunction.importApi(ee.Collection, "AggregateFeatureCollection", "Collection", "aggregate_"), ee.Collection.initialized_ = !0);
};
ee.Collection.reset = function() {
  ee.ApiFunction.clearApi(ee.Collection);
  ee.Collection.initialized_ = !1;
};
ee.Collection.prototype.filter = function(filter) {
  filter = ee.arguments.extractFromFunction(ee.Collection.prototype.filter, arguments).filter;
  if (!filter) {
    throw Error("Empty filters.");
  }
  return this.castInternal(ee.ApiFunction._call("Collection.filter", this, filter));
};
goog.exportProperty(ee.Collection.prototype, "filter", ee.Collection.prototype.filter);
ee.Collection.prototype.filterMetadata = function(name, operator, value) {
  var args = ee.arguments.extractFromFunction(ee.Collection.prototype.filterMetadata, arguments);
  return this.filter(ee.Filter.metadata(args.name, args.operator, args.value));
};
goog.exportProperty(ee.Collection.prototype, "filterMetadata", ee.Collection.prototype.filterMetadata);
ee.Collection.prototype.filterBounds = function(geometry) {
  return this.filter(ee.Filter.bounds(geometry));
};
goog.exportProperty(ee.Collection.prototype, "filterBounds", ee.Collection.prototype.filterBounds);
ee.Collection.prototype.filterDate = function(start, opt_end) {
  var args = ee.arguments.extractFromFunction(ee.Collection.prototype.filterDate, arguments);
  return this.filter(ee.Filter.date(args.start, args.end));
};
goog.exportProperty(ee.Collection.prototype, "filterDate", ee.Collection.prototype.filterDate);
ee.Collection.prototype.limit = function(max, opt_property, opt_ascending) {
  var args = ee.arguments.extractFromFunction(ee.Collection.prototype.limit, arguments);
  return this.castInternal(ee.ApiFunction._call("Collection.limit", this, args.max, args.property, args.ascending));
};
goog.exportProperty(ee.Collection.prototype, "limit", ee.Collection.prototype.limit);
ee.Collection.prototype.sort = function(property, opt_ascending) {
  var args = ee.arguments.extractFromFunction(ee.Collection.prototype.sort, arguments);
  return this.castInternal(ee.ApiFunction._call("Collection.limit", this, void 0, args.property, args.ascending));
};
goog.exportProperty(ee.Collection.prototype, "sort", ee.Collection.prototype.sort);
ee.Collection.prototype.name = function() {
  return "Collection";
};
ee.Collection.prototype.elementType = function() {
  return ee.Element;
};
ee.Collection.prototype.map = function(algorithm, opt_dropNulls) {
  var elementType = this.elementType();
  return this.castInternal(ee.ApiFunction._call("Collection.map", this, function(e) {
    return algorithm(new elementType(e));
  }, opt_dropNulls));
};
goog.exportProperty(ee.Collection.prototype, "map", ee.Collection.prototype.map);
ee.Collection.prototype.iterate = function(algorithm, opt_first) {
  var first = void 0 !== opt_first ? opt_first : null, elementType = this.elementType();
  return ee.ApiFunction._call("Collection.iterate", this, function(e, p) {
    return algorithm(new elementType(e), p);
  }, first);
};
goog.exportProperty(ee.Collection.prototype, "iterate", ee.Collection.prototype.iterate);
ee.Feature = function(geometry, opt_properties) {
  if (!(this instanceof ee.Feature)) {
    return ee.ComputedObject.construct(ee.Feature, arguments);
  }
  if (geometry instanceof ee.Feature) {
    if (opt_properties) {
      throw Error("Can't create Feature out of a Feature and properties.");
    }
    return geometry;
  }
  if (2 < arguments.length) {
    throw Error("The Feature constructor takes at most 2 arguments (" + arguments.length + " given)");
  }
  ee.Feature.initialize();
  if (geometry instanceof ee.Geometry || null === geometry) {
    ee.Element.call(this, new ee.ApiFunction("Feature"), {geometry:geometry, metadata:opt_properties || null});
  } else if (geometry instanceof ee.ComputedObject) {
    ee.Element.call(this, geometry.func, geometry.args, geometry.varName);
  } else if ("Feature" == geometry.type) {
    var properties = geometry.properties || {};
    if ("id" in geometry) {
      if ("system:index" in properties) {
        throw Error('Can\'t specify both "id" and "system:index".');
      }
      properties = module$contents$goog$object_clone(properties);
      properties["system:index"] = geometry.id;
    }
    ee.Element.call(this, new ee.ApiFunction("Feature"), {geometry:new ee.Geometry(geometry.geometry), metadata:properties});
  } else {
    ee.Element.call(this, new ee.ApiFunction("Feature"), {geometry:new ee.Geometry(geometry), metadata:opt_properties || null});
  }
};
goog.inherits(ee.Feature, ee.Element);
goog.exportSymbol("ee.Feature", ee.Feature);
ee.Feature.initialized_ = !1;
ee.Feature.initialize = function() {
  ee.Feature.initialized_ || (ee.ApiFunction.importApi(ee.Feature, "Feature", "Feature"), ee.Feature.initialized_ = !0);
};
ee.Feature.reset = function() {
  ee.ApiFunction.clearApi(ee.Feature);
  ee.Feature.initialized_ = !1;
};
ee.Feature.prototype.getInfo = function(opt_callback) {
  return ee.Feature.superClass_.getInfo.call(this, opt_callback);
};
goog.exportProperty(ee.Feature.prototype, "getInfo", ee.Feature.prototype.getInfo);
ee.Feature.prototype.getMapId = function(opt_visParams, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.Feature.prototype.getMap, arguments);
  return ee.ApiFunction._call("Collection", [this]).getMapId(args.visParams, args.callback);
};
goog.exportProperty(ee.Feature.prototype, "getMapId", ee.Feature.prototype.getMapId);
ee.Feature.prototype.getMap = ee.Feature.prototype.getMapId;
goog.exportProperty(ee.Feature.prototype, "getMap", ee.Feature.prototype.getMap);
ee.Feature.prototype.name = function() {
  return "Feature";
};
ee.data.images = {};
ee.data.images.applyTransformsToImage = function(taskConfig) {
  var resultParams = {}, image = ee.data.images.applyCrsAndTransform(taskConfig.element, taskConfig);
  image = ee.data.images.applySelectionAndScale(image, taskConfig, resultParams);
  resultParams.element = image;
  return resultParams;
};
ee.data.images.applyTransformsToCollection = function(taskConfig) {
  var resultParams = {}, collection = taskConfig.element.map(function(image) {
    var projected = ee.data.images.applyCrsAndTransform(image, taskConfig);
    return ee.data.images.applySelectionAndScale(projected, taskConfig, resultParams);
  });
  resultParams.element = collection;
  return resultParams;
};
ee.data.images.applySelectionAndScale = function(image, params, outParams) {
  var clipParams = {}, dimensions_consumed = !1, SCALING_KEYS = ["maxDimension", "width", "height", "scale"];
  module$contents$goog$object_forEach(params, function(value, key) {
    if (null != value) {
      switch(key) {
        case "dimensions":
          var dims = "string" === typeof value ? value.split("x").map(Number) : Array.isArray(value) ? value : "number" === typeof value ? [value] : [];
          if (1 === dims.length) {
            clipParams.maxDimension = dims[0];
          } else if (2 === dims.length) {
            clipParams.width = dims[0], clipParams.height = dims[1];
          } else {
            throw Error("Invalid dimensions " + value);
          }
          break;
        case "dimensions_consumed":
          dimensions_consumed = !0;
          break;
        case "bbox":
          null != clipParams.geometry && console.warn("Multiple request parameters converted to region.");
          clipParams.geometry = ee.data.images.bboxToGeometry(value);
          break;
        case "region":
          null != clipParams.geometry && console.warn("Multiple request parameters converted to region.");
          clipParams.geometry = ee.data.images.regionToGeometry(value);
          break;
        case "scale":
          clipParams.scale = Number(value);
          break;
        default:
          outParams[key] = value;
      }
    }
  });
  module$contents$goog$object_isEmpty(clipParams) || (clipParams.input = image, image = SCALING_KEYS.some(function(key) {
    return key in clipParams;
  }) || dimensions_consumed ? ee.ApiFunction._apply("Image.clipToBoundsAndScale", clipParams) : ee.ApiFunction._apply("Image.clip", clipParams));
  return image;
};
ee.data.images.bboxToGeometry = function(bbox) {
  if (bbox instanceof ee.Geometry.Rectangle) {
    return bbox;
  }
  var bboxArray = bbox;
  if ("string" === typeof bbox) {
    try {
      bboxArray = JSON.parse(bbox);
    } catch ($jscomp$unused$catch$924384358$0) {
      bboxArray = bbox.split(/\s*,\s*/).map(Number);
    }
  }
  if (Array.isArray(bboxArray)) {
    if (bboxArray.some(isNaN)) {
      throw Error("Invalid bbox `{bboxArray}`, please specify a list of numbers.");
    }
    return new ee.Geometry.Rectangle(bboxArray, null, !1);
  }
  throw Error('Invalid bbox "{bbox}" type, must be of type Array<number>');
};
ee.data.images.regionToGeometry = function(region) {
  if (region instanceof ee.Geometry) {
    return region;
  }
  var regionObject = region;
  if ("string" === typeof region) {
    try {
      regionObject = JSON.parse(region);
    } catch (e) {
      throw Error('Region string "' + region + '" is not valid GeoJSON.');
    }
  }
  if (Array.isArray(regionObject)) {
    return new ee.Geometry.Polygon(regionObject, null, !1);
  }
  if (goog.isObject(regionObject)) {
    return new ee.Geometry(regionObject, null, !1);
  }
  throw Error("Region {region} was not convertible to an ee.Geometry.");
};
ee.data.images.applyCrsAndTransform = function(image, params) {
  var crs = params.crs || "", crsTransform = params.crsTransform || params.crs_transform;
  null != crsTransform && (crsTransform = ee.data.images.maybeConvertCrsTransformToArray_(crsTransform));
  if (!crs && !crsTransform) {
    return image;
  }
  if (crsTransform && !crs) {
    throw Error('Must specify "crs" if "crsTransform" is specified.');
  }
  if (crsTransform) {
    if (image = ee.ApiFunction._apply("Image.reproject", {image:image, crs:crs, crsTransform:crsTransform}), null != params.dimensions && null == params.scale && null == params.region) {
      var dimensions = params.dimensions;
      "string" === typeof dimensions && (dimensions = dimensions.split("x").map(Number));
      if (2 === dimensions.length) {
        delete params.dimensions;
        params.dimensions_consumed = !0;
        var projection = (new ee.ApiFunction("Projection")).call(crs, crsTransform);
        params.region = new ee.Geometry.Rectangle([0, 0, dimensions[0], dimensions[1]], projection, !1);
      }
    }
  } else {
    image = ee.ApiFunction._apply("Image.setDefaultProjection", {image:image, crs:crs, crsTransform:[1, 0, 0, 0, -1, 0]});
  }
  return image;
};
ee.data.images.maybeConvertCrsTransformToArray_ = function(crsTransform) {
  var transformArray = crsTransform;
  if ("string" === typeof transformArray) {
    try {
      transformArray = JSON.parse(transformArray);
    } catch (e) {
    }
  }
  if (Array.isArray(transformArray)) {
    if (6 === transformArray.length && module$contents$goog$array_every(transformArray, function(x) {
      return "number" === typeof x;
    })) {
      return transformArray;
    }
    throw Error("Invalid argument, crs transform must be a list of 6 numbers.");
  }
  throw Error("Invalid argument, crs transform was not a string or array.");
};
ee.data.images.applyVisualization = function(image, params) {
  var request = {}, visParams = ee.data.images.extractVisParams(params, request);
  module$contents$goog$object_isEmpty(visParams) || (visParams.image = image, image = ee.ApiFunction._apply("Image.visualize", visParams));
  request.image = image;
  return request;
};
ee.data.images.extractVisParams = function(params, outParams) {
  var keysToExtract = "bands gain bias min max gamma palette opacity forceRgbOutput".split(" "), visParams = {};
  module$contents$goog$object_forEach(params, function(value, key) {
    module$contents$goog$array_contains(keysToExtract, key) ? visParams[key] = value : outParams[key] = value;
  });
  return visParams;
};
ee.data.images.buildDownloadIdImage = function(image, params) {
  params = Object.assign({}, params);
  var extractAndValidateTransforms = function(obj) {
    var extracted = {};
    ["crs", "crs_transform", "dimensions", "region"].forEach(function(key) {
      key in obj && (extracted[key] = obj[key]);
    });
    null != obj.scale && null == obj.dimensions && (extracted.scale = obj.scale);
    return extracted;
  }, buildImagePerBand = function(band) {
    var bandId = band.id;
    if (void 0 === bandId) {
      throw Error("Each band dictionary must have an id.");
    }
    var bandImage = image.select(bandId), copyParams = extractAndValidateTransforms(params), bandParams = extractAndValidateTransforms(band);
    bandParams = extractAndValidateTransforms(Object.assign(copyParams, bandParams));
    bandImage = ee.data.images.applyCrsAndTransform(bandImage, bandParams);
    return bandImage = ee.data.images.applySelectionAndScale(bandImage, bandParams, {});
  };
  if ("ZIPPED_GEO_TIFF_PER_BAND" === params.format && params.bands && params.bands.length) {
    var images = params.bands.map(buildImagePerBand);
    image = images.reduce(function(result, bandImage) {
      return ee.ApiFunction._call("Image.addBands", result, bandImage, null, !0);
    }, images.shift());
  } else {
    var copyParams = extractAndValidateTransforms(params);
    image = ee.data.images.applyCrsAndTransform(image, copyParams);
    image = ee.data.images.applySelectionAndScale(image, copyParams, {});
  }
  return image;
};
ee.Image = function(opt_args) {
  if (!(this instanceof ee.Image)) {
    return ee.ComputedObject.construct(ee.Image, arguments);
  }
  if (opt_args instanceof ee.Image) {
    return opt_args;
  }
  ee.Image.initialize();
  var argCount = arguments.length;
  if (0 == argCount || 1 == argCount && void 0 === opt_args) {
    ee.Element.call(this, new ee.ApiFunction("Image.mask"), {image:new ee.Image(0), mask:new ee.Image(0)});
  } else if (1 == argCount) {
    if (ee.Types.isNumber(opt_args)) {
      ee.Element.call(this, new ee.ApiFunction("Image.constant"), {value:opt_args});
    } else if (ee.Types.isString(opt_args)) {
      ee.Element.call(this, new ee.ApiFunction("Image.load"), {id:opt_args});
    } else {
      if (Array.isArray(opt_args)) {
        return ee.Image.combine_(module$contents$goog$array_map(opt_args, function(elem) {
          return new ee.Image(elem);
        }));
      }
      if (opt_args instanceof ee.ComputedObject) {
        "Array" == opt_args.name() ? ee.Element.call(this, new ee.ApiFunction("Image.constant"), {value:opt_args}) : ee.Element.call(this, opt_args.func, opt_args.args, opt_args.varName);
      } else {
        throw Error("Unrecognized argument type to convert to an Image: " + opt_args);
      }
    }
  } else if (2 == argCount) {
    var id = arguments[0], version = arguments[1];
    if (ee.Types.isString(id) && ee.Types.isNumber(version)) {
      ee.Element.call(this, new ee.ApiFunction("Image.load"), {id:id, version:version});
    } else {
      throw Error("Unrecognized argument types to convert to an Image: " + arguments);
    }
  } else {
    throw Error("The Image constructor takes at most 2 arguments (" + argCount + " given)");
  }
};
goog.inherits(ee.Image, ee.Element);
goog.exportSymbol("ee.Image", ee.Image);
ee.Image.initialized_ = !1;
ee.Image.initialize = function() {
  ee.Image.initialized_ || (ee.ApiFunction.importApi(ee.Image, "Image", "Image"), ee.Image.initialized_ = !0);
};
ee.Image.reset = function() {
  ee.ApiFunction.clearApi(ee.Image);
  ee.Image.initialized_ = !1;
};
ee.Image.prototype.getInfo = function(opt_callback) {
  return ee.Image.superClass_.getInfo.call(this, opt_callback);
};
goog.exportProperty(ee.Image.prototype, "getInfo", ee.Image.prototype.getInfo);
ee.Image.prototype.getMapId = function(opt_visParams, opt_callback) {
  var $jscomp$this$m1632813579$6 = this, args = ee.arguments.extractFromFunction(ee.Image.prototype.getMap, arguments), request = ee.data.images.applyVisualization(this, args.visParams);
  if (args.callback) {
    var callback = args.callback;
    ee.data.getMapId(request, function(data, error) {
      var mapId = data ? Object.assign(data, {image:$jscomp$this$m1632813579$6}) : void 0;
      callback(mapId, error);
    });
  } else {
    var response = ee.data.getMapId(request);
    response.image = this;
    return response;
  }
};
goog.exportProperty(ee.Image.prototype, "getMapId", ee.Image.prototype.getMapId);
ee.Image.prototype.getMap = ee.Image.prototype.getMapId;
goog.exportProperty(ee.Image.prototype, "getMap", ee.Image.prototype.getMap);
ee.Image.prototype.getDownloadURL = function(params, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.Image.prototype.getDownloadURL, arguments), request = args.params ? module$contents$goog$object_clone(args.params) : {};
  request.image = this;
  if (args.callback) {
    var callback = args.callback;
    ee.data.getDownloadId(request, function(downloadId, error) {
      downloadId ? callback(ee.data.makeDownloadUrl(downloadId)) : callback(null, error);
    });
  } else {
    return ee.data.makeDownloadUrl(ee.data.getDownloadId(request));
  }
};
goog.exportProperty(ee.Image.prototype, "getDownloadURL", ee.Image.prototype.getDownloadURL);
ee.Image.prototype.getThumbId = function(params, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.Image.prototype.getDownloadURL, arguments), request = args.params ? module$contents$goog$object_clone(args.params) : {}, extra = {}, image = ee.data.images.applyCrsAndTransform(this, request);
  image = ee.data.images.applySelectionAndScale(image, request, extra);
  request = ee.data.images.applyVisualization(image, extra);
  return args.callback ? (ee.data.getThumbId(request, args.callback), null) : ee.data.getThumbId(request);
};
goog.exportProperty(ee.Image.prototype, "getThumbId", ee.Image.prototype.getThumbId);
ee.Image.prototype.getThumbURL = function(params, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.Image.prototype.getThumbURL, arguments);
  if (args.callback) {
    this.getThumbId(args.params, function(thumbId, opt_error) {
      var thumbUrl = "";
      if (void 0 === opt_error) {
        try {
          thumbUrl = ee.data.makeThumbUrl(thumbId);
        } catch (e) {
          opt_error = String(e.message);
        }
      }
      args.callback(thumbUrl, opt_error);
    });
  } else {
    return ee.data.makeThumbUrl(this.getThumbId(args.params));
  }
};
goog.exportProperty(ee.Image.prototype, "getThumbURL", ee.Image.prototype.getThumbURL);
ee.Image.rgb = function(r, g, b) {
  var args = ee.arguments.extractFromFunction(ee.Image.rgb, arguments);
  return ee.Image.combine_([args.r, args.g, args.b], ["vis-red", "vis-green", "vis-blue"]);
};
goog.exportProperty(ee.Image, "rgb", ee.Image.rgb);
ee.Image.cat = function(var_args) {
  var args = Array.prototype.slice.call(arguments);
  return ee.Image.combine_(args, null);
};
goog.exportProperty(ee.Image, "cat", ee.Image.cat);
ee.Image.combine_ = function(images, opt_names) {
  if (0 == images.length) {
    return ee.ApiFunction._call("Image.constant", []);
  }
  for (var result = new ee.Image(images[0]), i = 1; i < images.length; i++) {
    result = ee.ApiFunction._call("Image.addBands", result, images[i]);
  }
  opt_names && (result = result.select([".*"], opt_names));
  return result;
};
ee.Image.prototype.select = function(var_args) {
  var args = Array.prototype.slice.call(arguments), algorithmArgs = {input:this, bandSelectors:args[0] || []};
  if (2 < args.length || ee.Types.isString(args[0]) || ee.Types.isNumber(args[0])) {
    for (var i = 0; i < args.length; i++) {
      if (!(ee.Types.isString(args[i]) || ee.Types.isNumber(args[i]) || args[i] instanceof ee.ComputedObject)) {
        throw Error("Illegal argument to select(): " + args[i]);
      }
    }
    algorithmArgs.bandSelectors = args;
  } else {
    args[1] && (algorithmArgs.newNames = args[1]);
  }
  return ee.ApiFunction._apply("Image.select", algorithmArgs);
};
goog.exportProperty(ee.Image.prototype, "select", ee.Image.prototype.select);
ee.Image.prototype.expression = function(expression, opt_map) {
  var originalArgs = ee.arguments.extractFromFunction(ee.Image.prototype.expression, arguments), vars = ["DEFAULT_EXPRESSION_IMAGE"], eeArgs = {DEFAULT_EXPRESSION_IMAGE:this};
  if (originalArgs.map) {
    var map = originalArgs.map, name;
    for (name in map) {
      vars.push(name), eeArgs[name] = new ee.Image(map[name]);
    }
  }
  var body = ee.ApiFunction._call("Image.parseExpression", originalArgs.expression, "DEFAULT_EXPRESSION_IMAGE", vars), func = new ee.Function();
  func.encode = function(encoder) {
    return body.encode(encoder);
  };
  func.encodeCloudInvocation = function(serializer, args) {
    return ee.rpc_node.functionByReference(serializer.makeReference(body), args);
  };
  func.getSignature = function() {
    return {name:"", args:module$contents$goog$array_map(vars, function(name) {
      return {name:name, type:"Image", optional:!1};
    }, this), returns:"Image"};
  };
  return func.apply(eeArgs);
};
goog.exportProperty(ee.Image.prototype, "expression", ee.Image.prototype.expression);
ee.Image.prototype.clip = function(geometry) {
  try {
    geometry = new ee.Geometry(geometry);
  } catch (e) {
  }
  return ee.ApiFunction._call("Image.clip", this, geometry);
};
goog.exportProperty(ee.Image.prototype, "clip", ee.Image.prototype.clip);
ee.Image.prototype.rename = function(var_args) {
  var names = 1 != arguments.length || ee.Types.isString(arguments[0]) ? Array.from(arguments) : arguments[0];
  return ee.ApiFunction._call("Image.rename", this, names);
};
goog.exportProperty(ee.Image.prototype, "rename", ee.Image.prototype.rename);
ee.Image.prototype.name = function() {
  return "Image";
};
ee.List = function(list) {
  if (this instanceof ee.List) {
    if (1 < arguments.length) {
      throw Error("ee.List() only accepts 1 argument.");
    }
    if (list instanceof ee.List) {
      return list;
    }
  } else {
    return ee.ComputedObject.construct(ee.List, arguments);
  }
  ee.List.initialize();
  if (Array.isArray(list)) {
    ee.ComputedObject.call(this, null, null), this.list_ = list;
  } else if (list instanceof ee.ComputedObject) {
    ee.ComputedObject.call(this, list.func, list.args, list.varName), this.list_ = null;
  } else {
    throw Error("Invalid argument specified for ee.List(): " + list);
  }
};
goog.inherits(ee.List, ee.ComputedObject);
goog.exportSymbol("ee.List", ee.List);
ee.List.initialized_ = !1;
ee.List.initialize = function() {
  ee.List.initialized_ || (ee.ApiFunction.importApi(ee.List, "List", "List"), ee.List.initialized_ = !0);
};
ee.List.reset = function() {
  ee.ApiFunction.clearApi(ee.List);
  ee.List.initialized_ = !1;
};
ee.List.prototype.encode = function(encoder) {
  return Array.isArray(this.list_) ? module$contents$goog$array_map(this.list_, function(elem) {
    return encoder(elem);
  }) : ee.List.superClass_.encode.call(this, encoder);
};
ee.List.prototype.encodeCloudValue = function(serializer) {
  return Array.isArray(this.list_) ? ee.rpc_node.reference(serializer.makeReference(this.list_)) : ee.List.superClass_.encodeCloudValue.call(this, serializer);
};
ee.List.prototype.name = function() {
  return "List";
};
ee.FeatureCollection = function(args, opt_column) {
  if (!(this instanceof ee.FeatureCollection)) {
    return ee.ComputedObject.construct(ee.FeatureCollection, arguments);
  }
  if (args instanceof ee.FeatureCollection) {
    return args;
  }
  if (2 < arguments.length) {
    throw Error("The FeatureCollection constructor takes at most 2 arguments (" + arguments.length + " given)");
  }
  ee.FeatureCollection.initialize();
  args instanceof ee.Geometry && (args = new ee.Feature(args));
  args instanceof ee.Feature && (args = [args]);
  if (ee.Types.isString(args)) {
    var actualArgs = {tableId:args};
    opt_column && (actualArgs.geometryColumn = opt_column);
    ee.Collection.call(this, new ee.ApiFunction("Collection.loadTable"), actualArgs);
  } else if (Array.isArray(args)) {
    ee.Collection.call(this, new ee.ApiFunction("Collection"), {features:module$contents$goog$array_map(args, function(elem) {
      return new ee.Feature(elem);
    })});
  } else if (args instanceof ee.List) {
    ee.Collection.call(this, new ee.ApiFunction("Collection"), {features:args});
  } else if (args && "object" === typeof args && "FeatureCollection" === args.type) {
    ee.Collection.call(this, new ee.ApiFunction("Collection"), {features:args.features.map(function(f) {
      return new ee.Feature(f);
    })});
  } else if (args instanceof ee.ComputedObject) {
    ee.Collection.call(this, args.func, args.args, args.varName);
  } else {
    throw Error("Unrecognized argument type to convert to a FeatureCollection: " + args);
  }
};
goog.inherits(ee.FeatureCollection, ee.Collection);
goog.exportSymbol("ee.FeatureCollection", ee.FeatureCollection);
ee.FeatureCollection.initialized_ = !1;
ee.FeatureCollection.initialize = function() {
  ee.FeatureCollection.initialized_ || (ee.ApiFunction.importApi(ee.FeatureCollection, "FeatureCollection", "FeatureCollection"), ee.FeatureCollection.initialized_ = !0);
};
ee.FeatureCollection.reset = function() {
  ee.ApiFunction.clearApi(ee.FeatureCollection);
  ee.FeatureCollection.initialized_ = !1;
};
ee.FeatureCollection.prototype.getMapId = function(opt_visParams, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.FeatureCollection.prototype.getMapId, arguments), painted = ee.ApiFunction._apply("Collection.draw", {collection:this, color:(args.visParams || {}).color || "000000"});
  if (args.callback) {
    painted.getMapId(void 0, args.callback);
  } else {
    return painted.getMapId();
  }
};
goog.exportProperty(ee.FeatureCollection.prototype, "getMapId", ee.FeatureCollection.prototype.getMapId);
ee.FeatureCollection.prototype.getMap = ee.FeatureCollection.prototype.getMapId;
goog.exportProperty(ee.FeatureCollection.prototype, "getMap", ee.FeatureCollection.prototype.getMap);
ee.FeatureCollection.prototype.getInfo = function(opt_callback) {
  return ee.FeatureCollection.superClass_.getInfo.call(this, opt_callback);
};
goog.exportProperty(ee.FeatureCollection.prototype, "getInfo", ee.FeatureCollection.prototype.getInfo);
ee.FeatureCollection.prototype.getDownloadURL = function(opt_format, opt_selectors, opt_filename, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.FeatureCollection.prototype.getDownloadURL, arguments), request = {table:this};
  args.format && (request.format = args.format.toUpperCase());
  args.filename && (request.filename = args.filename);
  args.selectors && (request.selectors = args.selectors);
  if (args.callback) {
    ee.data.getTableDownloadId(request, function(downloadId, error) {
      downloadId ? args.callback(ee.data.makeTableDownloadUrl(downloadId)) : args.callback(null, error);
    });
  } else {
    return ee.data.makeTableDownloadUrl(ee.data.getTableDownloadId(request));
  }
};
goog.exportProperty(ee.FeatureCollection.prototype, "getDownloadURL", ee.FeatureCollection.prototype.getDownloadURL);
ee.FeatureCollection.prototype.select = function(propertySelectors, opt_newProperties, opt_retainGeometry) {
  if (ee.Types.isString(propertySelectors)) {
    var varargs = Array.prototype.slice.call(arguments);
    return this.map(function(feature) {
      return feature.select(varargs);
    });
  }
  var args = ee.arguments.extractFromFunction(ee.FeatureCollection.prototype.select, arguments);
  return this.map(function(feature) {
    return feature.select(args);
  });
};
goog.exportProperty(ee.FeatureCollection.prototype, "select", ee.FeatureCollection.prototype.select);
ee.FeatureCollection.prototype.name = function() {
  return "FeatureCollection";
};
ee.FeatureCollection.prototype.elementType = function() {
  return ee.Feature;
};
ee.ImageCollection = function(args) {
  if (!(this instanceof ee.ImageCollection)) {
    return ee.ComputedObject.construct(ee.ImageCollection, arguments);
  }
  if (args instanceof ee.ImageCollection) {
    return args;
  }
  if (1 != arguments.length) {
    throw Error("The ImageCollection constructor takes exactly 1 argument (" + arguments.length + " given)");
  }
  ee.ImageCollection.initialize();
  args instanceof ee.Image && (args = [args]);
  if (ee.Types.isString(args)) {
    ee.Collection.call(this, new ee.ApiFunction("ImageCollection.load"), {id:args});
  } else if (Array.isArray(args)) {
    ee.Collection.call(this, new ee.ApiFunction("ImageCollection.fromImages"), {images:module$contents$goog$array_map(args, function(elem) {
      return new ee.Image(elem);
    })});
  } else if (args instanceof ee.List) {
    ee.Collection.call(this, new ee.ApiFunction("ImageCollection.fromImages"), {images:args});
  } else if (args instanceof ee.ComputedObject) {
    ee.Collection.call(this, args.func, args.args, args.varName);
  } else {
    throw Error("Unrecognized argument type to convert to an ImageCollection: " + args);
  }
};
goog.inherits(ee.ImageCollection, ee.Collection);
goog.exportSymbol("ee.ImageCollection", ee.ImageCollection);
ee.ImageCollection.initialized_ = !1;
ee.ImageCollection.initialize = function() {
  ee.ImageCollection.initialized_ || (ee.ApiFunction.importApi(ee.ImageCollection, "ImageCollection", "ImageCollection"), ee.ApiFunction.importApi(ee.ImageCollection, "reduce", "ImageCollection"), ee.ImageCollection.initialized_ = !0);
};
ee.ImageCollection.reset = function() {
  ee.ApiFunction.clearApi(ee.ImageCollection);
  ee.ImageCollection.initialized_ = !1;
};
ee.ImageCollection.prototype.getFilmstripThumbURL = function(params, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.ImageCollection.prototype.getFilmstripThumbURL, arguments);
  return ee.ImageCollection.prototype.getThumbURL_(this, args, ["png", "jpg", "jpeg"], ee.ImageCollection.ThumbTypes.FILMSTRIP, opt_callback);
};
goog.exportProperty(ee.ImageCollection.prototype, "getFilmstripThumbURL", ee.ImageCollection.prototype.getFilmstripThumbURL);
ee.ImageCollection.prototype.getVideoThumbURL = function(params, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.ImageCollection.prototype.getVideoThumbURL, arguments);
  return ee.ImageCollection.prototype.getThumbURL_(this, args, ["gif"], ee.ImageCollection.ThumbTypes.VIDEO, opt_callback);
};
goog.exportProperty(ee.ImageCollection.prototype, "getVideoThumbURL", ee.ImageCollection.prototype.getVideoThumbURL);
ee.ImageCollection.ThumbTypes = {FILMSTRIP:"filmstrip", VIDEO:"video", IMAGE:"image"};
ee.ImageCollection.prototype.getThumbURL_ = function(collection, args, validFormats, opt_thumbType, opt_callback) {
  var extraParams = {}, clippedCollection = collection.map(function(image) {
    var projected = ee.data.images.applyCrsAndTransform(image, args.params);
    return ee.data.images.applySelectionAndScale(projected, args.params, extraParams);
  }), request = {}, visParams = ee.data.images.extractVisParams(extraParams, request);
  request.imageCollection = clippedCollection.map(function(image) {
    visParams.image = image;
    return ee.ApiFunction._apply("Image.visualize", visParams);
  });
  null != args.params.dimensions && (request.dimensions = args.params.dimensions);
  if (request.format) {
    if (!module$contents$goog$array_some(validFormats, function(format) {
      return goog.string.caseInsensitiveEquals(format, request.format);
    })) {
      throw Error("Invalid format specified.");
    }
  } else {
    request.format = validFormats[0];
  }
  var getThumbId = ee.data.getThumbId;
  switch(opt_thumbType) {
    case ee.ImageCollection.ThumbTypes.VIDEO:
      getThumbId = ee.data.getVideoThumbId;
      break;
    case ee.ImageCollection.ThumbTypes.FILMSTRIP:
      getThumbId = ee.data.getFilmstripThumbId;
  }
  if (args.callback) {
    getThumbId(request, function(thumbId, opt_error) {
      var thumbUrl = "";
      if (void 0 === opt_error) {
        try {
          thumbUrl = ee.data.makeThumbUrl(thumbId);
        } catch (e) {
          opt_error = String(e.message);
        }
      }
      args.callback(thumbUrl, opt_error);
    });
  } else {
    return ee.data.makeThumbUrl(getThumbId(request));
  }
};
ee.ImageCollection.prototype.getMapId = function(opt_visParams, opt_callback) {
  var args = ee.arguments.extractFromFunction(ee.ImageCollection.prototype.getMapId, arguments), mosaic = ee.ApiFunction._call("ImageCollection.mosaic", this);
  if (args.callback) {
    mosaic.getMapId(args.visParams, args.callback);
  } else {
    return mosaic.getMapId(args.visParams);
  }
};
goog.exportProperty(ee.ImageCollection.prototype, "getMapId", ee.ImageCollection.prototype.getMapId);
ee.ImageCollection.prototype.getMap = ee.ImageCollection.prototype.getMapId;
goog.exportProperty(ee.ImageCollection.prototype, "getMap", ee.ImageCollection.prototype.getMap);
ee.ImageCollection.prototype.getInfo = function(opt_callback) {
  return ee.ImageCollection.superClass_.getInfo.call(this, opt_callback);
};
goog.exportProperty(ee.ImageCollection.prototype, "getInfo", ee.ImageCollection.prototype.getInfo);
ee.ImageCollection.prototype.select = function(selectors, opt_names) {
  var varargs = arguments;
  return this.map(function(obj) {
    return obj.select.apply(obj, varargs);
  });
};
goog.exportProperty(ee.ImageCollection.prototype, "select", ee.ImageCollection.prototype.select);
ee.ImageCollection.prototype.linkCollection = function(imageCollection, opt_linkedBands, opt_linkedProperties, opt_matchPropertyName) {
  var args = ee.arguments.extractFromFunction(ee.ImageCollection.prototype.linkCollection, arguments);
  return this.map(function(obj) {
    return ee.ApiFunction._call("Image.linkCollection", obj, args.imageCollection, args.linkedBands, args.linkedProperties, args.matchPropertyName);
  });
};
goog.exportProperty(ee.ImageCollection.prototype, "linkCollection", ee.ImageCollection.prototype.linkCollection);
ee.ImageCollection.prototype.first = function() {
  return new ee.Image(ee.ApiFunction._call("Collection.first", this));
};
goog.exportProperty(ee.ImageCollection.prototype, "first", ee.ImageCollection.prototype.first);
ee.ImageCollection.prototype.name = function() {
  return "ImageCollection";
};
ee.ImageCollection.prototype.elementType = function() {
  return ee.Image;
};
ee.batch = {};
var module$contents$ee$batch_Export = {image:{}, map:{}, table:{}, video:{}, videoMap:{}, classifier:{}}, module$contents$ee$batch_ExportTask = function(config) {
  this.config_ = config;
  this.id = null;
};
module$contents$ee$batch_ExportTask.create = function(exportArgs) {
  var config = {element:module$contents$ee$batch_Export.extractElement(exportArgs)};
  Object.assign(config, exportArgs);
  config = module$contents$goog$object_filter(config, function(x) {
    return null != x;
  });
  return new module$contents$ee$batch_ExportTask(config);
};
module$contents$ee$batch_ExportTask.prototype.start = function(opt_success, opt_error) {
  var $jscomp$this$1827622838$3 = this;
  goog.asserts.assert(this.config_, "Task config must be specified for tasks to be started.");
  this.id = this.id || ee.data.newTaskId(1)[0];
  goog.asserts.assertString(this.id, "Failed to obtain task ID.");
  if (opt_success) {
    ee.data.startProcessing(this.id, this.config_, function(response, error) {
      if (error) {
        opt_error(error);
      } else {
        var $jscomp$nullish$tmp11;
        $jscomp$this$1827622838$3.id = null != ($jscomp$nullish$tmp11 = response.taskId) ? $jscomp$nullish$tmp11 : null;
        opt_success();
      }
    });
  } else {
    var $jscomp$nullish$tmp10;
    this.id = null != ($jscomp$nullish$tmp10 = ee.data.startProcessing(this.id, this.config_).taskId) ? $jscomp$nullish$tmp10 : null;
  }
};
goog.exportProperty(module$contents$ee$batch_ExportTask.prototype, "start", module$contents$ee$batch_ExportTask.prototype.start);
module$contents$ee$batch_Export.image.toAsset = function(image, opt_description, opt_assetId, opt_pyramidingPolicy, opt_dimensions, opt_region, opt_scale, opt_crs, opt_crsTransform, opt_maxPixels, opt_shardSize, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.image.toAsset, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.ASSET, ee.data.ExportType.IMAGE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.image.toAsset", module$contents$ee$batch_Export.image.toAsset);
module$contents$ee$batch_Export.image.toCloudStorage = function(image, opt_description, opt_bucket, opt_fileNamePrefix, opt_dimensions, opt_region, opt_scale, opt_crs, opt_crsTransform, opt_maxPixels, opt_shardSize, opt_fileDimensions, opt_skipEmptyTiles, opt_fileFormat, opt_formatOptions, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.image.toCloudStorage, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.GCS, ee.data.ExportType.IMAGE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.image.toCloudStorage", module$contents$ee$batch_Export.image.toCloudStorage);
module$contents$ee$batch_Export.image.toDrive = function(image, opt_description, opt_folder, opt_fileNamePrefix, opt_dimensions, opt_region, opt_scale, opt_crs, opt_crsTransform, opt_maxPixels, opt_shardSize, opt_fileDimensions, opt_skipEmptyTiles, opt_fileFormat, opt_formatOptions, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.image.toDrive, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.DRIVE, ee.data.ExportType.IMAGE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.image.toDrive", module$contents$ee$batch_Export.image.toDrive);
module$contents$ee$batch_Export.map.toCloudStorage = function(image, opt_description, opt_bucket, opt_fileFormat, opt_path, opt_writePublicTiles, opt_scale, opt_maxZoom, opt_minZoom, opt_region, opt_skipEmptyTiles, opt_mapsApiKey, opt_bucketCorsUris, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.map.toCloudStorage, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.GCS, ee.data.ExportType.MAP);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.map.toCloudStorage", module$contents$ee$batch_Export.map.toCloudStorage);
module$contents$ee$batch_Export.table.toCloudStorage = function(collection, opt_description, opt_bucket, opt_fileNamePrefix, opt_fileFormat, opt_selectors, opt_maxVertices, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.table.toCloudStorage, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.GCS, ee.data.ExportType.TABLE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.table.toCloudStorage", module$contents$ee$batch_Export.table.toCloudStorage);
module$contents$ee$batch_Export.table.toDrive = function(collection, opt_description, opt_folder, opt_fileNamePrefix, opt_fileFormat, opt_selectors, opt_maxVertices, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.table.toDrive, arguments);
  clientConfig.type = ee.data.ExportType.TABLE;
  var serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.DRIVE, ee.data.ExportType.TABLE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.table.toDrive", module$contents$ee$batch_Export.table.toDrive);
module$contents$ee$batch_Export.table.toAsset = function(collection, opt_description, opt_assetId, opt_maxVertices, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.table.toAsset, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.ASSET, ee.data.ExportType.TABLE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.table.toAsset", module$contents$ee$batch_Export.table.toAsset);
module$contents$ee$batch_Export.table.toFeatureView = function(collection, opt_description, opt_assetId, opt_maxFeaturesPerTile, opt_thinningStrategy, opt_thinningRanking, opt_zOrderRanking, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.table.toFeatureView, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.FEATURE_VIEW, ee.data.ExportType.TABLE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.table.toFeatureView", module$contents$ee$batch_Export.table.toFeatureView);
module$contents$ee$batch_Export.table.toBigQuery = function(collection, opt_description, opt_table, opt_overwrite, opt_append, opt_selectors, opt_maxVertices, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.table.toBigQuery, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.BIGQUERY, ee.data.ExportType.TABLE);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.table.toBigQuery", module$contents$ee$batch_Export.table.toBigQuery);
module$contents$ee$batch_Export.video.toCloudStorage = function(collection, opt_description, opt_bucket, opt_fileNamePrefix, opt_framesPerSecond, opt_dimensions, opt_region, opt_scale, opt_crs, opt_crsTransform, opt_maxPixels, opt_maxFrames, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.video.toCloudStorage, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.GCS, ee.data.ExportType.VIDEO);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.video.toCloudStorage", module$contents$ee$batch_Export.video.toCloudStorage);
module$contents$ee$batch_Export.video.toDrive = function(collection, opt_description, opt_folder, opt_fileNamePrefix, opt_framesPerSecond, opt_dimensions, opt_region, opt_scale, opt_crs, opt_crsTransform, opt_maxPixels, opt_maxFrames, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.video.toDrive, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.DRIVE, ee.data.ExportType.VIDEO);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.video.toDrive", module$contents$ee$batch_Export.video.toDrive);
module$contents$ee$batch_Export.videoMap.toCloudStorage = function(collection, opt_description, opt_bucket, opt_fileNamePrefix, opt_framesPerSecond, opt_writePublicTiles, opt_minZoom, opt_maxZoom, opt_scale, opt_region, opt_skipEmptyTiles, opt_minTimeMachineZoomSubset, opt_maxTimeMachineZoomSubset, opt_tileWidth, opt_tileHeight, opt_tileStride, opt_videoFormat, opt_version, opt_mapsApiKey, opt_bucketCorsUris, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.videoMap.toCloudStorage, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.GCS, ee.data.ExportType.VIDEO_MAP);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.videoMap.toCloudStorage", module$contents$ee$batch_Export.videoMap.toCloudStorage);
module$contents$ee$batch_Export.classifier.toAsset = function(classifier, opt_description, opt_assetId, opt_priority) {
  var clientConfig = ee.arguments.extractFromFunction(module$contents$ee$batch_Export.classifier.toAsset, arguments), serverConfig = module$contents$ee$batch_Export.convertToServerParams(clientConfig, ee.data.ExportDestination.ASSET, ee.data.ExportType.CLASSIFIER);
  return module$contents$ee$batch_ExportTask.create(serverConfig);
};
goog.exportSymbol("module$contents$ee$batch_Export.classifier.toAsset", module$contents$ee$batch_Export.classifier.toAsset);
module$contents$ee$batch_Export.serializeRegion = function(region) {
  if (region instanceof ee.Geometry) {
    region = region.toGeoJSON();
  } else if ("string" === typeof region) {
    try {
      region = goog.asserts.assertObject(JSON.parse(region));
    } catch (x) {
      throw Error("Invalid format for region property. Region must be GeoJSON LinearRing or Polygon specified as actual coordinates or serialized as a string. See Export documentation.");
    }
  }
  if (!(goog.isObject(region) && "type" in region)) {
    try {
      new ee.Geometry.LineString(region);
    } catch (e) {
      try {
        new ee.Geometry.Polygon(region);
      } catch (e2) {
        throw Error("Invalid format for region property. Region must be GeoJSON LinearRing or Polygon specified as actual coordinates or serialized as a string. See Export documentation.");
      }
    }
  }
  return JSON.stringify(region);
};
module$contents$ee$batch_Export.resolveRegionParam = function(params) {
  params = module$contents$goog$object_clone(params);
  if (!params.region) {
    return goog.Promise.resolve(params);
  }
  var region = params.region;
  if (region instanceof ee.ComputedObject) {
    return region instanceof ee.Element && (region = region.geometry()), new goog.Promise(function(resolve, reject) {
      region.getInfo(function(regionInfo, error) {
        error ? reject(error) : (params.region = params.type === ee.data.ExportType.IMAGE ? new ee.Geometry(regionInfo) : module$contents$ee$batch_Export.serializeRegion(regionInfo), resolve(params));
      });
    });
  }
  params.region = params.type === ee.data.ExportType.IMAGE ? new ee.Geometry(region) : module$contents$ee$batch_Export.serializeRegion(region);
  return goog.Promise.resolve(params);
};
module$contents$ee$batch_Export.extractElement = function(exportArgs) {
  var isInArgs = function(key) {
    return key in exportArgs;
  }, eeElementKey = module$contents$ee$batch_Export.EE_ELEMENT_KEYS.find(isInArgs);
  goog.asserts.assert(1 === module$contents$goog$array_count(module$contents$ee$batch_Export.EE_ELEMENT_KEYS, isInArgs), 'Expected a single "image", "collection" or "classifier" key.');
  var element = exportArgs[eeElementKey];
  if (element instanceof ee.Image) {
    var result = element;
  } else if (element instanceof ee.FeatureCollection) {
    result = element;
  } else if (element instanceof ee.ImageCollection) {
    result = element;
  } else if (element instanceof ee.Element) {
    result = element;
  } else if (element instanceof ee.ComputedObject) {
    result = element;
  } else {
    throw Error("Unknown element type provided: " + typeof element + ". Expected:  ee.Image, ee.ImageCollection, ee.FeatureCollection,  ee.Element or ee.ComputedObject.");
  }
  delete exportArgs[eeElementKey];
  return result;
};
module$contents$ee$batch_Export.convertToServerParams = function(originalArgs, destination, exportType, serializeRegion) {
  serializeRegion = void 0 === serializeRegion ? !0 : serializeRegion;
  var taskConfig = {type:exportType};
  Object.assign(taskConfig, originalArgs);
  switch(exportType) {
    case ee.data.ExportType.IMAGE:
      taskConfig = module$contents$ee$batch_Export.image.prepareTaskConfig_(taskConfig, destination);
      break;
    case ee.data.ExportType.MAP:
      taskConfig = module$contents$ee$batch_Export.map.prepareTaskConfig_(taskConfig, destination);
      break;
    case ee.data.ExportType.TABLE:
      taskConfig = module$contents$ee$batch_Export.table.prepareTaskConfig_(taskConfig, destination);
      break;
    case ee.data.ExportType.VIDEO:
      taskConfig = module$contents$ee$batch_Export.video.prepareTaskConfig_(taskConfig, destination);
      break;
    case ee.data.ExportType.VIDEO_MAP:
      taskConfig = module$contents$ee$batch_Export.videoMap.prepareTaskConfig_(taskConfig, destination);
      break;
    case ee.data.ExportType.CLASSIFIER:
      taskConfig = module$contents$ee$batch_Export.classifier.prepareTaskConfig_(taskConfig, destination);
      break;
    default:
      throw Error("Unknown export type: " + taskConfig.type);
  }
  serializeRegion && null != taskConfig.region && (taskConfig.region = module$contents$ee$batch_Export.serializeRegion(taskConfig.region));
  return taskConfig;
};
module$contents$ee$batch_Export.prepareDestination_ = function(taskConfig, destination) {
  switch(destination) {
    case ee.data.ExportDestination.GCS:
      taskConfig.outputBucket = taskConfig.bucket || "";
      taskConfig.outputPrefix = taskConfig.fileNamePrefix || taskConfig.path || "";
      delete taskConfig.fileNamePrefix;
      delete taskConfig.path;
      delete taskConfig.bucket;
      break;
    case ee.data.ExportDestination.ASSET:
      taskConfig.assetId = taskConfig.assetId || "";
      break;
    case ee.data.ExportDestination.FEATURE_VIEW:
      taskConfig.mapName = taskConfig.mapName || "";
      break;
    case ee.data.ExportDestination.BIGQUERY:
      taskConfig.table = taskConfig.table || "";
      break;
    default:
      var folderType = goog.typeOf(taskConfig.folder);
      if (!module$contents$goog$array_contains(["string", "undefined"], folderType)) {
        throw Error('Error: toDrive "folder" parameter must be a string, but is of type ' + folderType + ".");
      }
      taskConfig.driveFolder = taskConfig.folder || "";
      taskConfig.driveFileNamePrefix = taskConfig.fileNamePrefix || "";
      delete taskConfig.folder;
      delete taskConfig.fileNamePrefix;
  }
  return taskConfig;
};
module$contents$ee$batch_Export.image.prepareTaskConfig_ = function(taskConfig, destination) {
  null == taskConfig.fileFormat && (taskConfig.fileFormat = "GeoTIFF");
  taskConfig = module$contents$ee$batch_Export.reconcileImageFormat(taskConfig);
  taskConfig = module$contents$ee$batch_Export.prepareDestination_(taskConfig, destination);
  null != taskConfig.crsTransform && (taskConfig[module$contents$ee$batch_Export.CRS_TRANSFORM_KEY] = taskConfig.crsTransform, delete taskConfig.crsTransform);
  return taskConfig;
};
module$contents$ee$batch_Export.table.prepareTaskConfig_ = function(taskConfig, destination) {
  Array.isArray(taskConfig.selectors) && (taskConfig.selectors = taskConfig.selectors.join());
  taskConfig = module$contents$ee$batch_Export.reconcileTableFormat(taskConfig);
  return taskConfig = module$contents$ee$batch_Export.prepareDestination_(taskConfig, destination);
};
module$contents$ee$batch_Export.map.prepareTaskConfig_ = function(taskConfig, destination) {
  taskConfig = module$contents$ee$batch_Export.prepareDestination_(taskConfig, destination);
  return taskConfig = module$contents$ee$batch_Export.reconcileMapFormat(taskConfig);
};
module$contents$ee$batch_Export.video.prepareTaskConfig_ = function(taskConfig, destination) {
  taskConfig = module$contents$ee$batch_Export.reconcileVideoFormat_(taskConfig);
  taskConfig = module$contents$ee$batch_Export.prepareDestination_(taskConfig, destination);
  null != taskConfig.crsTransform && (taskConfig[module$contents$ee$batch_Export.CRS_TRANSFORM_KEY] = taskConfig.crsTransform, delete taskConfig.crsTransform);
  return taskConfig;
};
module$contents$ee$batch_Export.videoMap.prepareTaskConfig_ = function(taskConfig, destination) {
  taskConfig = module$contents$ee$batch_Export.reconcileVideoFormat_(taskConfig);
  taskConfig.version = taskConfig.version || module$contents$ee$batch_VideoMapVersion.V1;
  taskConfig.stride = taskConfig.stride || 1;
  taskConfig.tileDimensions = {width:taskConfig.tileWidth || 256, height:taskConfig.tileHeight || 256};
  return taskConfig = module$contents$ee$batch_Export.prepareDestination_(taskConfig, destination);
};
module$contents$ee$batch_Export.classifier.prepareTaskConfig_ = function(taskConfig, destination) {
  return taskConfig = module$contents$ee$batch_Export.prepareDestination_(taskConfig, destination);
};
var module$contents$ee$batch_VideoFormat = {MP4:"MP4", GIF:"GIF", VP9:"VP9"}, module$contents$ee$batch_MapFormat = {AUTO_JPEG_PNG:"AUTO_JPEG_PNG", JPEG:"JPEG", PNG:"PNG"}, module$contents$ee$batch_ImageFormat = {GEO_TIFF:"GEO_TIFF", TF_RECORD_IMAGE:"TF_RECORD_IMAGE"}, module$contents$ee$batch_TableFormat = {CSV:"CSV", GEO_JSON:"GEO_JSON", KML:"KML", KMZ:"KMZ", SHP:"SHP", TF_RECORD_TABLE:"TF_RECORD_TABLE"}, module$contents$ee$batch_VideoMapVersion = {V1:"V1", V2:"V2"}, module$contents$ee$batch_FORMAT_OPTIONS_MAP = 
{GEO_TIFF:["cloudOptimized", "fileDimensions", "noData", "shardSize"], TF_RECORD_IMAGE:"patchDimensions kernelSize compressed maxFileSize defaultValue tensorDepths sequenceData collapseBands maskedThreshold".split(" ")}, module$contents$ee$batch_FORMAT_PREFIX_MAP = {GEO_TIFF:"tiff", TF_RECORD_IMAGE:"tfrecord"};
module$contents$ee$batch_Export.reconcileVideoFormat_ = function(taskConfig) {
  taskConfig.videoOptions = taskConfig.framesPerSecond || 5;
  taskConfig.maxFrames = taskConfig.maxFrames || 1E3;
  taskConfig.maxPixels = taskConfig.maxPixels || 1E8;
  var formatString = taskConfig.fileFormat;
  null == formatString && (formatString = module$contents$ee$batch_VideoFormat.MP4);
  formatString = formatString.toUpperCase();
  switch(formatString) {
    case "MP4":
      formatString = module$contents$ee$batch_VideoFormat.MP4;
      break;
    case "GIF":
    case "JIF":
      formatString = module$contents$ee$batch_VideoFormat.GIF;
      break;
    case "VP9":
    case "WEBM":
      formatString = module$contents$ee$batch_VideoFormat.VP9;
      break;
    default:
      throw Error("Invalid file format " + formatString + ". Supported formats are: 'MP4', 'GIF', and 'WEBM'.");
  }
  taskConfig.fileFormat = formatString;
  return taskConfig;
};
module$contents$ee$batch_Export.reconcileImageFormat = function(taskConfig) {
  var formatString = taskConfig.fileFormat;
  null == formatString && (formatString = module$contents$ee$batch_ImageFormat.GEO_TIFF);
  formatString = formatString.toUpperCase();
  switch(formatString) {
    case "TIFF":
    case "TIF":
    case "GEO_TIFF":
    case "GEOTIFF":
      formatString = module$contents$ee$batch_ImageFormat.GEO_TIFF;
      break;
    case "TF_RECORD":
    case "TF_RECORD_IMAGE":
    case "TFRECORD":
      formatString = module$contents$ee$batch_ImageFormat.TF_RECORD_IMAGE;
      break;
    default:
      throw Error("Invalid file format " + formatString + ". Supported formats are: 'GEOTIFF', 'TFRECORD'.");
  }
  taskConfig.fileFormat = formatString;
  if (null != taskConfig.formatOptions) {
    var formatOptions = module$contents$ee$batch_Export.prefixImageFormatOptions_(taskConfig, formatString);
    delete taskConfig.formatOptions;
    Object.assign(taskConfig, formatOptions);
  }
  return taskConfig;
};
module$contents$ee$batch_Export.reconcileMapFormat = function(taskConfig) {
  var formatString = taskConfig.fileFormat;
  null == formatString && (formatString = module$contents$ee$batch_MapFormat.AUTO_JPEG_PNG);
  formatString = formatString.toUpperCase();
  switch(formatString) {
    case "AUTO":
    case "AUTO_JPEG_PNG":
    case "AUTO_JPG_PNG":
      formatString = module$contents$ee$batch_MapFormat.AUTO_JPEG_PNG;
      break;
    case "JPG":
    case "JPEG":
      formatString = module$contents$ee$batch_MapFormat.JPEG;
      break;
    case "PNG":
      formatString = module$contents$ee$batch_MapFormat.PNG;
      break;
    default:
      throw Error("Invalid file format " + formatString + ". Supported formats are: 'AUTO', 'PNG', and 'JPEG'.");
  }
  taskConfig.fileFormat = formatString;
  return taskConfig;
};
module$contents$ee$batch_Export.reconcileTableFormat = function(taskConfig) {
  var formatString = taskConfig.fileFormat;
  null == formatString && (formatString = module$contents$ee$batch_TableFormat.CSV);
  formatString = formatString.toUpperCase();
  switch(formatString) {
    case "CSV":
      formatString = module$contents$ee$batch_TableFormat.CSV;
      break;
    case "JSON":
    case "GEOJSON":
    case "GEO_JSON":
      formatString = module$contents$ee$batch_TableFormat.GEO_JSON;
      break;
    case "KML":
      formatString = module$contents$ee$batch_TableFormat.KML;
      break;
    case "KMZ":
      formatString = module$contents$ee$batch_TableFormat.KMZ;
      break;
    case "SHP":
      formatString = module$contents$ee$batch_TableFormat.SHP;
      break;
    case "TF_RECORD":
    case "TF_RECORD_TABLE":
    case "TFRECORD":
      formatString = module$contents$ee$batch_TableFormat.TF_RECORD_TABLE;
      break;
    default:
      throw Error("Invalid file format " + formatString + ". Supported formats are: 'CSV', 'GeoJSON', 'KML', 'KMZ', 'SHP', and 'TFRecord'.");
  }
  taskConfig.fileFormat = formatString;
  return taskConfig;
};
module$contents$ee$batch_Export.prefixImageFormatOptions_ = function(taskConfig, imageFormat) {
  var formatOptions = taskConfig.formatOptions;
  if (null == formatOptions) {
    return {};
  }
  if (Object.keys(taskConfig).some(function(key) {
    return module$contents$goog$object_containsKey(formatOptions, key);
  })) {
    throw Error("Parameter specified at least twice: once in config, and once in config format options.");
  }
  for (var prefix = module$contents$ee$batch_FORMAT_PREFIX_MAP[imageFormat], validOptionKeys = module$contents$ee$batch_FORMAT_OPTIONS_MAP[imageFormat], prefixedOptions = {}, $jscomp$iter$50 = $jscomp.makeIterator(Object.entries(formatOptions)), $jscomp$key$1827622838$35$ = $jscomp$iter$50.next(); !$jscomp$key$1827622838$35$.done; $jscomp$key$1827622838$35$ = $jscomp$iter$50.next()) {
    var $jscomp$destructuring$var58 = $jscomp.makeIterator($jscomp$key$1827622838$35$.value), key = $jscomp$destructuring$var58.next().value, value = $jscomp$destructuring$var58.next().value;
    if (!module$contents$goog$array_contains(validOptionKeys, key)) {
      var validKeysMsg = validOptionKeys.join(", ");
      throw Error('"' + key + '" is not a valid option, the image format "' + imageFormat + '""may have the following options: ' + (validKeysMsg + '".'));
    }
    var prefixedKey = prefix + key[0].toUpperCase() + key.substring(1);
    Array.isArray(value) ? prefixedOptions[prefixedKey] = value.join() : prefixedOptions[prefixedKey] = value;
  }
  return prefixedOptions;
};
module$contents$ee$batch_Export.CRS_TRANSFORM_KEY = "crs_transform";
module$contents$ee$batch_Export.EE_ELEMENT_KEYS = ["image", "collection", "classifier"];
ee.batch.Export = module$contents$ee$batch_Export;
ee.batch.ExportTask = module$contents$ee$batch_ExportTask;
ee.batch.ImageFormat = module$contents$ee$batch_ImageFormat;
ee.batch.MapFormat = module$contents$ee$batch_MapFormat;
ee.batch.ServerTaskConfig = {};
ee.batch.TableFormat = module$contents$ee$batch_TableFormat;
ee.batch.VideoFormat = module$contents$ee$batch_VideoFormat;
ee.Number = function(number) {
  if (!(this instanceof ee.Number)) {
    return ee.ComputedObject.construct(ee.Number, arguments);
  }
  if (number instanceof ee.Number) {
    return number;
  }
  ee.Number.initialize();
  if ("number" === typeof number) {
    ee.ComputedObject.call(this, null, null), this.number_ = number;
  } else if (number instanceof ee.ComputedObject) {
    ee.ComputedObject.call(this, number.func, number.args, number.varName), this.number_ = null;
  } else {
    throw Error("Invalid argument specified for ee.Number(): " + number);
  }
};
goog.inherits(ee.Number, ee.ComputedObject);
goog.exportSymbol("ee.Number", ee.Number);
ee.Number.initialized_ = !1;
ee.Number.initialize = function() {
  ee.Number.initialized_ || (ee.ApiFunction.importApi(ee.Number, "Number", "Number"), ee.Number.initialized_ = !0);
};
ee.Number.reset = function() {
  ee.ApiFunction.clearApi(ee.Number);
  ee.Number.initialized_ = !1;
};
ee.Number.prototype.encode = function(encoder) {
  return "number" === typeof this.number_ ? this.number_ : ee.Number.superClass_.encode.call(this, encoder);
};
ee.Number.prototype.encodeCloudValue = function(serializer) {
  return "number" === typeof this.number_ ? ee.rpc_node.reference(serializer.makeReference(this.number_)) : ee.Number.superClass_.encodeCloudValue.call(this, serializer);
};
ee.Number.prototype.name = function() {
  return "Number";
};
ee.String = function(string) {
  if (!(this instanceof ee.String)) {
    return ee.ComputedObject.construct(ee.String, arguments);
  }
  if (string instanceof ee.String) {
    return string;
  }
  ee.String.initialize();
  if ("string" === typeof string) {
    ee.ComputedObject.call(this, null, null), this.string_ = string;
  } else if (string instanceof ee.ComputedObject) {
    this.string_ = null, string.func && "String" == string.func.getSignature().returns ? ee.ComputedObject.call(this, string.func, string.args, string.varName) : ee.ComputedObject.call(this, new ee.ApiFunction("String"), {input:string}, null);
  } else {
    throw Error("Invalid argument specified for ee.String(): " + string);
  }
};
goog.inherits(ee.String, ee.ComputedObject);
goog.exportSymbol("ee.String", ee.String);
ee.String.initialized_ = !1;
ee.String.initialize = function() {
  ee.String.initialized_ || (ee.ApiFunction.importApi(ee.String, "String", "String"), ee.String.initialized_ = !0);
};
ee.String.reset = function() {
  ee.ApiFunction.clearApi(ee.String);
  ee.String.initialized_ = !1;
};
ee.String.prototype.encode = function(encoder) {
  return "string" === typeof this.string_ ? this.string_ : ee.String.superClass_.encode.call(this, encoder);
};
ee.String.prototype.encodeCloudValue = function(serializer) {
  return "string" === typeof this.string_ ? ee.rpc_node.reference(serializer.makeReference(this.string_)) : ee.String.superClass_.encodeCloudValue.call(this, serializer);
};
ee.String.prototype.name = function() {
  return "String";
};
ee.CustomFunction = function(signature, body) {
  if (!(this instanceof ee.CustomFunction)) {
    return ee.ComputedObject.construct(ee.CustomFunction, arguments);
  }
  for (var vars = [], args = signature.args, i = 0; i < args.length; i++) {
    var arg = args[i];
    vars.push(ee.CustomFunction.variable(ee.Types.nameToClass(arg.type), arg.name));
  }
  if (void 0 === body.apply(null, vars)) {
    throw Error("User-defined methods must return a value.");
  }
  this.signature_ = ee.CustomFunction.resolveNamelessArgs_(signature, vars, body);
  this.body_ = body.apply(null, vars);
};
goog.inherits(ee.CustomFunction, ee.Function);
goog.exportSymbol("ee.CustomFunction", ee.CustomFunction);
ee.CustomFunction.prototype.encode = function(encoder) {
  return {type:"Function", argumentNames:module$contents$goog$array_map(this.signature_.args, function(arg) {
    return arg.name;
  }), body:encoder(this.body_)};
};
ee.CustomFunction.prototype.encodeCloudValue = function(serializer) {
  return ee.rpc_node.functionDefinition(this.signature_.args.map(function(arg) {
    return arg.name;
  }), serializer.makeReference(this.body_));
};
ee.CustomFunction.prototype.encodeCloudInvocation = function(serializer, args) {
  return ee.rpc_node.functionByReference(serializer.makeReference(this), args);
};
ee.CustomFunction.prototype.getSignature = function() {
  return this.signature_;
};
ee.CustomFunction.variable = function(type, name) {
  type = type || Object;
  if (!(type.prototype instanceof ee.ComputedObject)) {
    if (type && type != Object) {
      if (type == String) {
        type = ee.String;
      } else if (type == Number) {
        type = ee.Number;
      } else if (type == Array) {
        type = goog.global.ee.List;
      } else {
        throw Error("Variables must be of an EE type, e.g. ee.Image or ee.Number.");
      }
    } else {
      type = ee.ComputedObject;
    }
  }
  var klass = function(name) {
    this.args = this.func = null;
    this.varName = name;
  };
  klass.prototype = type.prototype;
  return new klass(name);
};
ee.CustomFunction.create = function(func, returnType, arg_types) {
  var stringifyType = function(type) {
    return "string" === typeof type ? type : ee.Types.classToName(type);
  }, args = module$contents$goog$array_map(arg_types, function(argType) {
    return {name:null, type:stringifyType(argType)};
  }), signature = {name:"", returns:stringifyType(returnType), args:args};
  return new ee.CustomFunction(signature, func);
};
ee.CustomFunction.resolveNamelessArgs_ = function(signature, vars, body) {
  for (var namelessArgIndices = [], i = 0; i < vars.length; i++) {
    null === vars[i].varName && namelessArgIndices.push(i);
  }
  if (0 === namelessArgIndices.length) {
    return signature;
  }
  for (var baseName = "_MAPPING_VAR_" + function(expression) {
    var countNodes = function(nodes) {
      return nodes.map(countNode).reduce(function(a, b) {
        return a + b;
      }, 0);
    }, countNode = function(node) {
      return node.functionDefinitionValue ? 1 : node.arrayValue ? countNodes(node.arrayValue.values) : node.dictionaryValue ? countNodes(Object.values(node.dictionaryValue.values)) : node.functionInvocationValue ? countNodes(Object.values(node.functionInvocationValue.arguments)) : 0;
    };
    return countNodes(Object.values(expression.values));
  }(ee.Serializer.encodeCloudApiExpression(body.apply(null, vars), "<unbound>")) + "_", i$jscomp$0 = 0; i$jscomp$0 < namelessArgIndices.length; i$jscomp$0++) {
    var index = namelessArgIndices[i$jscomp$0], name = baseName + i$jscomp$0;
    vars[index].varName = name;
    signature.args[index].name = name;
  }
  return signature;
};
ee.Date = function(date, opt_tz) {
  if (!(this instanceof ee.Date)) {
    return ee.ComputedObject.construct(ee.Date, arguments);
  }
  if (date instanceof ee.Date) {
    return date;
  }
  ee.Date.initialize();
  var jsArgs = ee.arguments.extractFromFunction(ee.Date, arguments);
  date = jsArgs.date;
  var tz = jsArgs.tz, func = new ee.ApiFunction("Date"), args = {}, varName = null;
  if (ee.Types.isString(date)) {
    if (args.value = date, tz) {
      if (ee.Types.isString(tz)) {
        args.timeZone = tz;
      } else {
        throw Error("Invalid argument specified for ee.Date(..., opt_tz): " + tz);
      }
    }
  } else if (ee.Types.isNumber(date)) {
    args.value = date;
  } else if (goog.isDateLike(date)) {
    args.value = Math.floor(date.getTime());
  } else if (date instanceof ee.ComputedObject) {
    date.func && "Date" == date.func.getSignature().returns ? (func = date.func, args = date.args, varName = date.varName) : args.value = date;
  } else {
    throw Error("Invalid argument specified for ee.Date(): " + date);
  }
  ee.ComputedObject.call(this, func, args, varName);
};
goog.inherits(ee.Date, ee.ComputedObject);
goog.exportSymbol("ee.Date", ee.Date);
ee.Date.initialized_ = !1;
ee.Date.initialize = function() {
  ee.Date.initialized_ || (ee.ApiFunction.importApi(ee.Date, "Date", "Date"), ee.Date.initialized_ = !0);
};
ee.Date.reset = function() {
  ee.ApiFunction.clearApi(ee.Date);
  ee.Date.initialized_ = !1;
};
ee.Date.prototype.name = function() {
  return "Date";
};
ee.Deserializer = function() {
};
goog.exportSymbol("ee.Deserializer", ee.Deserializer);
ee.Deserializer.fromJSON = function(json) {
  return ee.Deserializer.decode(JSON.parse(json));
};
goog.exportSymbol("ee.Deserializer.fromJSON", ee.Deserializer.fromJSON);
ee.Deserializer.decode = function(json) {
  if ("result" in json && "values" in json) {
    return ee.Deserializer.decodeCloudApi(json);
  }
  var namedValues = {};
  if (goog.isObject(json) && "CompoundValue" === json.type) {
    for (var scopes = json.scope, i = 0; i < scopes.length; i++) {
      var key = scopes[i][0], value = scopes[i][1];
      if (key in namedValues) {
        throw Error('Duplicate scope key "' + key + '" in scope #' + i + ".");
      }
      namedValues[key] = ee.Deserializer.decodeValue_(value, namedValues);
    }
    json = json.value;
  }
  return ee.Deserializer.decodeValue_(json, namedValues);
};
goog.exportSymbol("ee.Deserializer.decode", ee.Deserializer.decode);
ee.Deserializer.decodeValue_ = function(json, namedValues) {
  if (null === json || "number" === typeof json || "boolean" === typeof json || "string" === typeof json) {
    return json;
  }
  if (Array.isArray(json)) {
    return module$contents$goog$array_map(json, function(element) {
      return ee.Deserializer.decodeValue_(element, namedValues);
    });
  }
  if (!goog.isObject(json) || "function" === typeof json) {
    throw Error("Cannot decode object: " + json);
  }
  var typeName = json.type;
  switch(typeName) {
    case "ValueRef":
      if (json.value in namedValues) {
        return namedValues[json.value];
      }
      throw Error("Unknown ValueRef: " + json);
    case "ArgumentRef":
      var varName = json.value;
      if ("string" !== typeof varName) {
        throw Error("Invalid variable name: " + varName);
      }
      return ee.CustomFunction.variable(Object, varName);
    case "Date":
      var microseconds = json.value;
      if ("number" !== typeof microseconds) {
        throw Error("Invalid date value: " + microseconds);
      }
      return new ee.Date(microseconds / 1E3);
    case "Bytes":
      return ee.Deserializer.roundTrip_(new module$exports$eeapiclient$ee_api_client.ValueNode({bytesValue:json}), json);
    case "Invocation":
      var func = "functionName" in json ? ee.ApiFunction.lookup(json.functionName) : ee.Deserializer.decodeValue_(json["function"], namedValues);
      var args = module$contents$goog$object_map(json.arguments, function(element) {
        return ee.Deserializer.decodeValue_(element, namedValues);
      });
      return ee.Deserializer.invocation_(func, args);
    case "Dictionary":
      return module$contents$goog$object_map(json.value, function(element) {
        return ee.Deserializer.decodeValue_(element, namedValues);
      });
    case "Function":
      var body = ee.Deserializer.decodeValue_(json.body, namedValues), signature = {name:"", args:module$contents$goog$array_map(json.argumentNames, function(argName) {
        return {name:argName, type:"Object", optional:!1};
      }), returns:"Object"};
      return new ee.CustomFunction(signature, function() {
        return body;
      });
    case "Point":
    case "MultiPoint":
    case "LineString":
    case "MultiLineString":
    case "Polygon":
    case "MultiPolygon":
    case "LinearRing":
    case "GeometryCollection":
      return new ee.Geometry(json);
    case "CompoundValue":
      throw Error("Nested CompoundValues are disallowed.");
    default:
      throw Error("Unknown encoded object type: " + typeName);
  }
};
ee.Deserializer.roundTrip_ = function(node, value) {
  var Reencoder = function() {
  };
  $jscomp.inherits(Reencoder, ee.Encodable);
  Reencoder.prototype.encode = function(encoder) {
    return value;
  };
  Reencoder.prototype.encodeCloudValue = function(encoder) {
    return node;
  };
  return new Reencoder();
};
ee.Deserializer.invocation_ = function(func, args) {
  if (func instanceof ee.Function) {
    return func.apply(args);
  }
  if (func instanceof ee.ComputedObject) {
    var ComputedFunction = function() {
      return ee.Function.apply(this, arguments) || this;
    };
    $jscomp.inherits(ComputedFunction, ee.Function);
    ComputedFunction.prototype.encode = function(encoder) {
      return func.encode(encoder);
    };
    ComputedFunction.prototype.encodeCloudInvocation = function(serializer, args) {
      return ee.rpc_node.functionByReference(serializer.makeReference(func), args);
    };
    return new ee.ComputedObject(new ComputedFunction(), args);
  }
  throw Error("Invalid function value");
};
ee.Deserializer.fromCloudApiJSON = function(json) {
  return ee.Deserializer.decodeCloudApi(JSON.parse(json));
};
goog.exportSymbol("ee.Deserializer.fromCloudApiJSON", ee.Deserializer.fromCloudApiJSON);
ee.Deserializer.decodeCloudApi = function(json) {
  var expression = module$contents$eeapiclient$domain_object_deserialize(module$exports$eeapiclient$ee_api_client.Expression, json), decoded = {}, lookup = function(reference, kind) {
    if (!(reference in decoded)) {
      if (!(reference in expression.values)) {
        throw Error("Cannot find " + kind + " " + reference);
      }
      decoded[reference] = decode(expression.values[reference]);
    }
    return decoded[reference];
  }, decode = function(node) {
    return null !== node.constantValue ? node.constantValue : null !== node.arrayValue ? node.arrayValue.values.map(decode) : null !== node.dictionaryValue ? module$contents$goog$object_map(node.dictionaryValue.values, decode) : null !== node.argumentReference ? ee.CustomFunction.variable(Object, node.argumentReference) : null !== node.functionDefinitionValue ? decodeFunctionDefinition(node.functionDefinitionValue) : null !== node.functionInvocationValue ? decodeFunctionInvocation(node.functionInvocationValue) : 
    null !== node.bytesValue ? ee.Deserializer.roundTrip_(new module$exports$eeapiclient$ee_api_client.ValueNode({bytesValue:node.bytesValue}), node.bytesValue) : null !== node.integerValue ? ee.Deserializer.roundTrip_(new module$exports$eeapiclient$ee_api_client.ValueNode({integerValue:node.integerValue}), node.integerValue) : null !== node.valueReference ? lookup(node.valueReference, "reference") : null;
  }, decodeFunctionDefinition = function(defined) {
    var body = lookup(defined.body, "function body"), signature = {args:defined.argumentNames.map(function(name) {
      return {name:name, type:"Object", optional:!1};
    }), name:"", returns:"Object"};
    return new ee.CustomFunction(signature, function() {
      return body;
    });
  }, decodeFunctionInvocation = function(invoked) {
    var func = invoked.functionReference ? lookup(invoked.functionReference, "function") : ee.ApiFunction.lookup(invoked.functionName), args = module$contents$goog$object_map(invoked.arguments, decode);
    return ee.Deserializer.invocation_(func, args);
  };
  return lookup(expression.result, "result value");
};
goog.exportSymbol("ee.Deserializer.decodeCloudApi", ee.Deserializer.decodeCloudApi);
ee.Dictionary = function(opt_dict) {
  if (!(this instanceof ee.Dictionary)) {
    return ee.ComputedObject.construct(ee.Dictionary, arguments);
  }
  if (opt_dict instanceof ee.Dictionary) {
    return opt_dict;
  }
  ee.Dictionary.initialize();
  ee.Types.isRegularObject(opt_dict) ? (ee.ComputedObject.call(this, null, null), this.dict_ = opt_dict) : (opt_dict instanceof ee.ComputedObject && opt_dict.func && "Dictionary" == opt_dict.func.getSignature().returns ? ee.ComputedObject.call(this, opt_dict.func, opt_dict.args, opt_dict.varName) : ee.ComputedObject.call(this, new ee.ApiFunction("Dictionary"), {input:opt_dict}, null), this.dict_ = null);
};
goog.inherits(ee.Dictionary, ee.ComputedObject);
goog.exportSymbol("ee.Dictionary", ee.Dictionary);
ee.Dictionary.initialized_ = !1;
ee.Dictionary.initialize = function() {
  ee.Dictionary.initialized_ || (ee.ApiFunction.importApi(ee.Dictionary, "Dictionary", "Dictionary"), ee.Dictionary.initialized_ = !0);
};
ee.Dictionary.reset = function() {
  ee.ApiFunction.clearApi(ee.Dictionary);
  ee.Dictionary.initialized_ = !1;
};
ee.Dictionary.prototype.encode = function(encoder) {
  return null !== this.dict_ ? encoder(this.dict_) : ee.Dictionary.superClass_.encode.call(this, encoder);
};
ee.Dictionary.prototype.encodeCloudValue = function(serializer) {
  return null !== this.dict_ ? ee.rpc_node.reference(serializer.makeReference(this.dict_)) : ee.Dictionary.superClass_.encodeCloudValue.call(this, serializer);
};
ee.Dictionary.prototype.name = function() {
  return "Dictionary";
};
ee.Terrain = {};
goog.exportSymbol("ee.Terrain", ee.Terrain);
ee.Terrain.initialized_ = !1;
ee.Terrain.initialize = function() {
  ee.Terrain.initialized_ || (ee.ApiFunction.importApi(ee.Terrain, "Terrain", "Terrain"), ee.Terrain.initialized_ = !0);
};
ee.Terrain.reset = function() {
  ee.ApiFunction.clearApi(ee.Terrain);
  ee.Terrain.initialized_ = !1;
};
ee.initialize = function(opt_baseurl, opt_tileurl, opt_successCallback, opt_errorCallback, opt_xsrfToken, opt_project) {
  if (ee.ready_ != ee.InitState.READY || opt_baseurl || opt_tileurl) {
    var isAsynchronous = null != opt_successCallback;
    if (opt_errorCallback) {
      if (isAsynchronous) {
        ee.errorCallbacks_.push(opt_errorCallback);
      } else {
        throw Error("Can't pass an error callback without a success callback.");
      }
    }
    if (ee.ready_ == ee.InitState.LOADING && isAsynchronous) {
      ee.successCallbacks_.push(opt_successCallback);
    } else {
      if (ee.ready_ = ee.InitState.LOADING, ee.data.initialize(opt_baseurl, opt_tileurl, opt_xsrfToken, opt_project), isAsynchronous) {
        ee.successCallbacks_.push(opt_successCallback), ee.ApiFunction.initialize(ee.initializationSuccess_, ee.initializationFailure_);
      } else {
        try {
          ee.ApiFunction.initialize(), ee.initializationSuccess_();
        } catch (e) {
          throw ee.initializationFailure_(e), e;
        }
      }
    }
  } else {
    opt_successCallback && opt_successCallback();
  }
};
goog.exportSymbol("ee.initialize", ee.initialize);
ee.reset = function() {
  ee.ready_ = ee.InitState.NOT_READY;
  ee.data.reset();
  ee.ApiFunction.reset();
  ee.Date.reset();
  ee.Dictionary.reset();
  ee.Element.reset();
  ee.Image.reset();
  ee.Feature.reset();
  ee.Collection.reset();
  ee.ImageCollection.reset();
  ee.FeatureCollection.reset();
  ee.Filter.reset();
  ee.Geometry.reset();
  ee.List.reset();
  ee.Number.reset();
  ee.String.reset();
  ee.Terrain.reset();
  ee.resetGeneratedClasses_();
  module$contents$goog$object_clear(ee.Algorithms);
};
goog.exportSymbol("ee.reset", ee.reset);
ee.InitState = {NOT_READY:"not_ready", LOADING:"loading", READY:"ready"};
goog.exportSymbol("ee.InitState", ee.InitState);
goog.exportSymbol("ee.InitState.NOT_READY", ee.InitState.NOT_READY);
goog.exportSymbol("ee.InitState.LOADING", ee.InitState.LOADING);
goog.exportSymbol("ee.InitState.READY", ee.InitState.READY);
ee.ready_ = ee.InitState.NOT_READY;
ee.successCallbacks_ = [];
ee.errorCallbacks_ = [];
ee.TILE_SIZE = 256;
goog.exportSymbol("ee.TILE_SIZE", ee.TILE_SIZE);
ee.generatedClasses_ = [];
ee.Algorithms = {};
goog.exportSymbol("ee.Algorithms", ee.Algorithms);
ee.ready = function() {
  return ee.ready_;
};
ee.call = function(func, var_args) {
  "string" === typeof func && (func = new ee.ApiFunction(func));
  var args = Array.prototype.slice.call(arguments, 1);
  return ee.Function.prototype.call.apply(func, args);
};
goog.exportSymbol("ee.call", ee.call);
ee.apply = function(func, namedArgs) {
  "string" === typeof func && (func = new ee.ApiFunction(func));
  return func.apply(namedArgs);
};
goog.exportSymbol("ee.apply", ee.apply);
ee.initializationSuccess_ = function() {
  if (ee.ready_ == ee.InitState.LOADING) {
    try {
      ee.Date.initialize(), ee.Dictionary.initialize(), ee.Element.initialize(), ee.Image.initialize(), ee.Feature.initialize(), ee.Collection.initialize(), ee.ImageCollection.initialize(), ee.FeatureCollection.initialize(), ee.Filter.initialize(), ee.Geometry.initialize(), ee.List.initialize(), ee.Number.initialize(), ee.String.initialize(), ee.Terrain.initialize(), ee.initializeGeneratedClasses_(), ee.initializeUnboundMethods_();
    } catch (e) {
      ee.initializationFailure_(e);
      return;
    }
    ee.ready_ = ee.InitState.READY;
    for (ee.errorCallbacks_ = []; 0 < ee.successCallbacks_.length;) {
      ee.successCallbacks_.shift()();
    }
  }
};
ee.initializationFailure_ = function(e) {
  if (ee.ready_ == ee.InitState.LOADING) {
    for (ee.ready_ = ee.InitState.NOT_READY, ee.successCallbacks_ = []; 0 < ee.errorCallbacks_.length;) {
      ee.errorCallbacks_.shift()(e);
    }
  }
};
ee.promote_ = function(arg, klass) {
  if (null === arg) {
    return null;
  }
  if (void 0 !== arg) {
    var exportedEE = goog.global.ee;
    switch(klass) {
      case "Image":
        return new ee.Image(arg);
      case "Feature":
        return arg instanceof ee.Collection ? ee.ApiFunction._call("Feature", ee.ApiFunction._call("Collection.geometry", arg)) : new ee.Feature(arg);
      case "Element":
        if (arg instanceof ee.Element) {
          return arg;
        }
        if (arg instanceof ee.Geometry) {
          return new ee.Feature(arg);
        }
        if (arg instanceof ee.ComputedObject) {
          return new ee.Element(arg.func, arg.args, arg.varName);
        }
        throw Error("Cannot convert " + arg + " to Element.");
      case "Geometry":
        return arg instanceof ee.FeatureCollection ? ee.ApiFunction._call("Collection.geometry", arg) : new ee.Geometry(arg);
      case "FeatureCollection":
      case "Collection":
        return arg instanceof ee.Collection ? arg : new ee.FeatureCollection(arg);
      case "ImageCollection":
        return new ee.ImageCollection(arg);
      case "Filter":
        return new ee.Filter(arg);
      case "Algorithm":
        if ("string" === typeof arg) {
          return new ee.ApiFunction(arg);
        }
        if ("function" === typeof arg) {
          return ee.CustomFunction.create(arg, "Object", module$contents$goog$array_repeat("Object", arg.length));
        }
        if (arg instanceof ee.Encodable) {
          return arg;
        }
        throw Error("Argument is not a function: " + arg);
      case "String":
        return ee.Types.isString(arg) || arg instanceof ee.String || arg instanceof ee.ComputedObject ? new ee.String(arg) : arg;
      case "Dictionary":
        return ee.Types.isRegularObject(arg) ? arg : new ee.Dictionary(arg);
      case "List":
        return new ee.List(arg);
      case "Number":
      case "Float":
      case "Long":
      case "Integer":
      case "Short":
      case "Byte":
        return new ee.Number(arg);
      default:
        if (klass in exportedEE) {
          var ctor = ee.ApiFunction.lookupInternal(klass);
          if (arg instanceof exportedEE[klass]) {
            return arg;
          }
          if (ctor) {
            return new exportedEE[klass](arg);
          }
          if ("string" === typeof arg) {
            if (arg in exportedEE[klass]) {
              return exportedEE[klass][arg].call();
            }
            throw Error("Unknown algorithm: " + klass + "." + arg);
          }
          return new exportedEE[klass](arg);
        }
        return arg;
    }
  }
};
ee.initializeUnboundMethods_ = function() {
  var unbound = ee.ApiFunction.unboundFunctions();
  module$contents$goog$object_getKeys(unbound).sort().forEach(function(name) {
    var func = unbound[name], signature = func.getSignature();
    if (!signature.hidden) {
      var nameParts = name.split("."), target = ee.Algorithms;
      for (target.signature = {}; 1 < nameParts.length;) {
        var first = nameParts[0];
        first in target || (target[first] = {signature:{}});
        target = target[first];
        nameParts = module$contents$goog$array_slice(nameParts, 1);
      }
      var bound = function(var_args) {
        return func.callOrApply(void 0, Array.prototype.slice.call(arguments, 0));
      };
      bound.signature = signature;
      bound.toString = goog.bind(func.toString, func);
      target[nameParts[0]] = bound;
    }
  });
};
ee.initializeGeneratedClasses_ = function() {
  var signatures = ee.ApiFunction.allSignatures(), names = {}, returnTypes = {}, sig;
  for (sig in signatures) {
    var type = void 0;
    type = -1 != sig.indexOf(".") ? sig.slice(0, sig.indexOf(".")) : sig;
    names[type] = !0;
    var rtype = signatures[sig].returns.replace(/<.*>/, "");
    returnTypes[rtype] = !0;
  }
  var exportedEE = goog.global.ee, name;
  for (name in names) {
    name in returnTypes && !(name in exportedEE) && (exportedEE[name] = ee.makeClass_(name), ee.generatedClasses_.push(name), signatures[name] ? (exportedEE[name].signature = signatures[name], exportedEE[name].signature.isConstructor = !0, ee.ApiFunction.boundSignatures_[name] = !0) : exportedEE[name].signature = {});
  }
  ee.Types.registerClasses(exportedEE);
};
ee.resetGeneratedClasses_ = function() {
  for (var exportedEE = goog.global.ee, i = 0; i < ee.generatedClasses_.length; i++) {
    var name = ee.generatedClasses_[i];
    ee.ApiFunction.clearApi(exportedEE[name]);
    delete exportedEE[name];
  }
  ee.generatedClasses_ = [];
  ee.Types.registerClasses(exportedEE);
};
ee.makeClass_ = function(name) {
  var target = function(var_args) {
    var klass = goog.global.ee[name], args = Array.prototype.slice.call(arguments), onlyOneArg = 1 == args.length;
    if (onlyOneArg && args[0] instanceof klass) {
      return args[0];
    }
    if (!(this instanceof klass)) {
      return ee.ComputedObject.construct(klass, args);
    }
    var ctor = ee.ApiFunction.lookupInternal(name), firstArgIsPrimitive = !(args[0] instanceof ee.ComputedObject), shouldUseConstructor = !1;
    ctor && (onlyOneArg ? firstArgIsPrimitive ? shouldUseConstructor = !0 : args[0].func && args[0].func.getSignature().returns == ctor.getSignature().returns || (shouldUseConstructor = !0) : shouldUseConstructor = !0);
    if (shouldUseConstructor) {
      var namedArgs = ee.Types.useKeywordArgs(args, ctor.getSignature()) ? args[0] : ctor.nameArgs(args);
      ee.ComputedObject.call(this, ctor, ctor.promoteArgs(namedArgs));
    } else {
      if (!onlyOneArg) {
        throw Error("Too many arguments for ee." + name + "(): " + args);
      }
      if (firstArgIsPrimitive) {
        throw Error("Invalid argument for ee." + name + "(): " + args + ". Must be a ComputedObject.");
      }
      var theOneArg = args[0];
      ee.ComputedObject.call(this, theOneArg.func, theOneArg.args, theOneArg.varName);
    }
  };
  goog.inherits(target, ee.ComputedObject);
  target.prototype.name = function() {
    return name;
  };
  ee.ApiFunction.importApi(target, name, name);
  return target;
};
ee.Function.registerPromoter(ee.promote_);
ee.FloatTileOverlay = function(url, mapId, token) {
  ee.AbstractOverlay.call(this, url, mapId, token);
  this.tileSize = new google.maps.Size(ee.FloatTileOverlay.TILE_EDGE_LENGTH, ee.FloatTileOverlay.TILE_EDGE_LENGTH);
  this.floatTiles_ = new goog.structs.Map();
  this.floatTileDivs_ = new goog.structs.Map();
};
$jscomp.inherits(ee.FloatTileOverlay, ee.AbstractOverlay);
ee.FloatTileOverlay.prototype.getTile = function(coord, zoom, ownerDocument) {
  var tileId = this.getTileId(coord, zoom), src = [this.url, tileId].join("/") + "?token=" + this.token, uniqueTileId = [tileId, this.tileCounter, this.token].join("/");
  this.tilesLoading.push(uniqueTileId);
  this.tileCounter += 1;
  var div = goog.dom.createDom(goog.dom.TagName.DIV), floatTile = this.loadFloatTile_(src, coord, uniqueTileId, div);
  this.dispatchTileEvent_();
  return div;
};
ee.FloatTileOverlay.prototype.loadFloatTile_ = function(tileUrl, coord, tileId, div) {
  var tileRequest = goog.net.XmlHttp();
  tileRequest.open("GET", tileUrl, !0);
  tileRequest.responseType = "arraybuffer";
  tileRequest.onreadystatechange = goog.bind(function() {
    if (tileRequest.readyState === XMLHttpRequest.DONE && 200 === tileRequest.status) {
      var tileResponse = tileRequest.response;
      if (tileResponse) {
        var floatBuffer = new Float32Array(tileResponse);
        this.handleFloatTileLoaded_(floatBuffer, coord, tileId, div);
      } else {
        throw this.tilesFailed.add(tileId), Error("Unable to request floating point array buffers.");
      }
    }
  }, this);
  tileRequest.send();
};
ee.FloatTileOverlay.prototype.handleFloatTileLoaded_ = function(floatTile, coord, tileId, div) {
  this.floatTiles_.set(coord, floatTile);
  this.floatTileDivs_.set(coord, div);
  module$contents$goog$array_remove(this.tilesLoading, tileId);
  this.dispatchTileEvent_();
};
ee.FloatTileOverlay.prototype.getAllFloatTiles = function() {
  return this.floatTiles_;
};
ee.FloatTileOverlay.prototype.getAllFloatTileDivs = function() {
  return this.floatTileDivs_;
};
ee.FloatTileOverlay.prototype.getLoadedFloatTilesCount = function() {
  return this.floatTiles_.getCount();
};
ee.FloatTileOverlay.prototype.dispatchTileEvent_ = function() {
  this.dispatchEvent(new ee.TileEvent(this.tilesLoading.length));
};
ee.FloatTileOverlay.prototype.disposeInternal = function() {
  this.floatTileDivs_ = this.floatTiles_ = null;
  ee.AbstractOverlay.prototype.disposeInternal.call(this);
};
goog.exportSymbol("ee.FloatTileOverlay", ee.FloatTileOverlay);
ee.FloatTileOverlay.TILE_EDGE_LENGTH = 256;
ee.layers = {};
var module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats = function(uniqueId) {
  this.statsByZoom_ = new Map();
  this.uniqueId_ = uniqueId;
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.prototype.addTileStats = function(start, end, zoom) {
  this.getStatsForZoom_(zoom).tileLatencies.push(end - start);
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.prototype.incrementThrottleCounter = function(zoom) {
  this.getStatsForZoom_(zoom).throttleCount++;
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.prototype.incrementErrorCounter = function(zoom) {
  this.getStatsForZoom_(zoom).errorCount++;
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.prototype.clear = function() {
  this.statsByZoom_.clear();
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.prototype.hasData = function() {
  return 0 < this.statsByZoom_.size;
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.prototype.getSummaryList = function() {
  var $jscomp$this$351498642$7 = this, summaryList = [];
  this.statsByZoom_.forEach(function(stats, zoom) {
    return summaryList.push({layerId:$jscomp$this$351498642$7.uniqueId_, zoomLevel:zoom, tileLatencies:stats.tileLatencies, throttleCount:stats.throttleCount, errorCount:stats.errorCount});
  });
  return summaryList;
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.prototype.getStatsForZoom_ = function(zoom) {
  this.statsByZoom_.has(zoom) || this.statsByZoom_.set(zoom, {throttleCount:0, errorCount:0, tileLatencies:[]});
  return this.statsByZoom_.get(zoom);
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.LayerStatsForZoomLevel = function() {
};
module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats.Summary = function() {
};
ee.layers.AbstractOverlayStats = module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats;
goog.events.EventHandler = function(opt_scope) {
  goog.Disposable.call(this);
  this.handler_ = opt_scope;
  this.keys_ = {};
};
goog.inherits(goog.events.EventHandler, goog.Disposable);
goog.events.EventHandler.typeArray_ = [];
goog.events.EventHandler.prototype.listen = function(src, type, opt_fn, opt_options) {
  return this.listen_(src, type, opt_fn, opt_options);
};
goog.events.EventHandler.prototype.listenWithScope = function(src, type, fn, options, scope) {
  return this.listen_(src, type, fn, options, scope);
};
goog.events.EventHandler.prototype.listen_ = function(src, type, opt_fn, opt_options, opt_scope) {
  Array.isArray(type) || (type && (goog.events.EventHandler.typeArray_[0] = type.toString()), type = goog.events.EventHandler.typeArray_);
  for (var i = 0; i < type.length; i++) {
    var listenerObj = goog.events.listen(src, type[i], opt_fn || this.handleEvent, opt_options || !1, opt_scope || this.handler_ || this);
    if (!listenerObj) {
      break;
    }
    this.keys_[listenerObj.key] = listenerObj;
  }
  return this;
};
goog.events.EventHandler.prototype.listenOnce = function(src, type, opt_fn, opt_options) {
  return this.listenOnce_(src, type, opt_fn, opt_options);
};
goog.events.EventHandler.prototype.listenOnceWithScope = function(src, type, fn, capture, scope) {
  return this.listenOnce_(src, type, fn, capture, scope);
};
goog.events.EventHandler.prototype.listenOnce_ = function(src, type, opt_fn, opt_options, opt_scope) {
  if (Array.isArray(type)) {
    for (var i = 0; i < type.length; i++) {
      this.listenOnce_(src, type[i], opt_fn, opt_options, opt_scope);
    }
  } else {
    var listenerObj = goog.events.listenOnce(src, type, opt_fn || this.handleEvent, opt_options, opt_scope || this.handler_ || this);
    if (!listenerObj) {
      return this;
    }
    this.keys_[listenerObj.key] = listenerObj;
  }
  return this;
};
goog.events.EventHandler.prototype.listenWithWrapper = function(src, wrapper, listener, opt_capt) {
  return this.listenWithWrapper_(src, wrapper, listener, opt_capt);
};
goog.events.EventHandler.prototype.listenWithWrapperAndScope = function(src, wrapper, listener, capture, scope) {
  return this.listenWithWrapper_(src, wrapper, listener, capture, scope);
};
goog.events.EventHandler.prototype.listenWithWrapper_ = function(src, wrapper, listener, opt_capt, opt_scope) {
  wrapper.listen(src, listener, opt_capt, opt_scope || this.handler_ || this, this);
  return this;
};
goog.events.EventHandler.prototype.getListenerCount = function() {
  var count = 0, key;
  for (key in this.keys_) {
    Object.prototype.hasOwnProperty.call(this.keys_, key) && count++;
  }
  return count;
};
goog.events.EventHandler.prototype.unlisten = function(src, type, opt_fn, opt_options, opt_scope) {
  if (Array.isArray(type)) {
    for (var i = 0; i < type.length; i++) {
      this.unlisten(src, type[i], opt_fn, opt_options, opt_scope);
    }
  } else {
    var listener = goog.events.getListener(src, type, opt_fn || this.handleEvent, goog.isObject(opt_options) ? !!opt_options.capture : !!opt_options, opt_scope || this.handler_ || this);
    listener && (goog.events.unlistenByKey(listener), delete this.keys_[listener.key]);
  }
  return this;
};
goog.events.EventHandler.prototype.unlistenWithWrapper = function(src, wrapper, listener, opt_capt, opt_scope) {
  wrapper.unlisten(src, listener, opt_capt, opt_scope || this.handler_ || this, this);
  return this;
};
goog.events.EventHandler.prototype.removeAll = function() {
  module$contents$goog$object_forEach(this.keys_, function(listenerObj, key) {
    this.keys_.hasOwnProperty(key) && goog.events.unlistenByKey(listenerObj);
  }, this);
  this.keys_ = {};
};
goog.events.EventHandler.prototype.disposeInternal = function() {
  goog.events.EventHandler.superClass_.disposeInternal.call(this);
  this.removeAll();
};
goog.events.EventHandler.prototype.handleEvent = function(e) {
  throw Error("EventHandler.handleEvent not implemented");
};
goog.fs = {};
goog.fs.DOMErrorLike = function() {
};
goog.fs.Error = function(error, action) {
  if (void 0 !== error.name) {
    this.name = error.name, this.code = goog.fs.Error.getCodeFromName_(error.name);
  } else {
    var code = goog.asserts.assertNumber(error.code);
    this.code = code;
    this.name = goog.fs.Error.getNameFromCode_(code);
  }
  module$contents$goog$debug$Error_DebugError.call(this, goog.string.subs("%s %s", this.name, action));
};
goog.inherits(goog.fs.Error, module$contents$goog$debug$Error_DebugError);
goog.fs.Error.ErrorName = {ABORT:"AbortError", ENCODING:"EncodingError", INVALID_MODIFICATION:"InvalidModificationError", INVALID_STATE:"InvalidStateError", NOT_FOUND:"NotFoundError", NOT_READABLE:"NotReadableError", NO_MODIFICATION_ALLOWED:"NoModificationAllowedError", PATH_EXISTS:"PathExistsError", QUOTA_EXCEEDED:"QuotaExceededError", SECURITY:"SecurityError", SYNTAX:"SyntaxError", TYPE_MISMATCH:"TypeMismatchError"};
goog.fs.Error.ErrorCode = {NOT_FOUND:1, SECURITY:2, ABORT:3, NOT_READABLE:4, ENCODING:5, NO_MODIFICATION_ALLOWED:6, INVALID_STATE:7, SYNTAX:8, INVALID_MODIFICATION:9, QUOTA_EXCEEDED:10, TYPE_MISMATCH:11, PATH_EXISTS:12};
goog.fs.Error.getNameFromCode_ = function(code) {
  var name = module$contents$goog$object_findKey(goog.fs.Error.NameToCodeMap_, function(c) {
    return code == c;
  });
  if (void 0 === name) {
    throw Error("Invalid code: " + code);
  }
  return name;
};
goog.fs.Error.getCodeFromName_ = function(name) {
  return goog.fs.Error.NameToCodeMap_[name];
};
var $jscomp$compprop18 = {};
goog.fs.Error.NameToCodeMap_ = ($jscomp$compprop18[goog.fs.Error.ErrorName.ABORT] = goog.fs.Error.ErrorCode.ABORT, $jscomp$compprop18[goog.fs.Error.ErrorName.ENCODING] = goog.fs.Error.ErrorCode.ENCODING, $jscomp$compprop18[goog.fs.Error.ErrorName.INVALID_MODIFICATION] = goog.fs.Error.ErrorCode.INVALID_MODIFICATION, $jscomp$compprop18[goog.fs.Error.ErrorName.INVALID_STATE] = goog.fs.Error.ErrorCode.INVALID_STATE, $jscomp$compprop18[goog.fs.Error.ErrorName.NOT_FOUND] = goog.fs.Error.ErrorCode.NOT_FOUND, 
$jscomp$compprop18[goog.fs.Error.ErrorName.NOT_READABLE] = goog.fs.Error.ErrorCode.NOT_READABLE, $jscomp$compprop18[goog.fs.Error.ErrorName.NO_MODIFICATION_ALLOWED] = goog.fs.Error.ErrorCode.NO_MODIFICATION_ALLOWED, $jscomp$compprop18[goog.fs.Error.ErrorName.PATH_EXISTS] = goog.fs.Error.ErrorCode.PATH_EXISTS, $jscomp$compprop18[goog.fs.Error.ErrorName.QUOTA_EXCEEDED] = goog.fs.Error.ErrorCode.QUOTA_EXCEEDED, $jscomp$compprop18[goog.fs.Error.ErrorName.SECURITY] = goog.fs.Error.ErrorCode.SECURITY, 
$jscomp$compprop18[goog.fs.Error.ErrorName.SYNTAX] = goog.fs.Error.ErrorCode.SYNTAX, $jscomp$compprop18[goog.fs.Error.ErrorName.TYPE_MISMATCH] = goog.fs.Error.ErrorCode.TYPE_MISMATCH, $jscomp$compprop18);
goog.fs.ProgressEvent = function(event, target) {
  goog.events.Event.call(this, event.type, target);
  this.event_ = event;
};
goog.inherits(goog.fs.ProgressEvent, goog.events.Event);
goog.fs.ProgressEvent.prototype.isLengthComputable = function() {
  return this.event_.lengthComputable;
};
goog.fs.ProgressEvent.prototype.getLoaded = function() {
  return this.event_.loaded;
};
goog.fs.ProgressEvent.prototype.getTotal = function() {
  return this.event_.total;
};
goog.fs.FileReader = function() {
  goog.events.EventTarget.call(this);
  this.reader_ = new FileReader();
  this.reader_.onloadstart = goog.bind(this.dispatchProgressEvent_, this);
  this.reader_.onprogress = goog.bind(this.dispatchProgressEvent_, this);
  this.reader_.onload = goog.bind(this.dispatchProgressEvent_, this);
  this.reader_.onabort = goog.bind(this.dispatchProgressEvent_, this);
  this.reader_.onerror = goog.bind(this.dispatchProgressEvent_, this);
  this.reader_.onloadend = goog.bind(this.dispatchProgressEvent_, this);
};
goog.inherits(goog.fs.FileReader, goog.events.EventTarget);
goog.fs.FileReader.ReadyState = {INIT:0, LOADING:1, DONE:2};
goog.fs.FileReader.EventType = {LOAD_START:"loadstart", PROGRESS:"progress", LOAD:"load", ABORT:"abort", ERROR:"error", LOAD_END:"loadend"};
goog.fs.FileReader.prototype.abort = function() {
  try {
    this.reader_.abort();
  } catch (e) {
    throw new goog.fs.Error(e, "aborting read");
  }
};
goog.fs.FileReader.prototype.getReadyState = function() {
  return this.reader_.readyState;
};
goog.fs.FileReader.prototype.getResult = function() {
  return this.reader_.result;
};
goog.fs.FileReader.prototype.getError = function() {
  return this.reader_.error && new goog.fs.Error(this.reader_.error, "reading file");
};
goog.fs.FileReader.prototype.dispatchProgressEvent_ = function(event) {
  this.dispatchEvent(new goog.fs.ProgressEvent(event, this));
};
goog.fs.FileReader.prototype.disposeInternal = function() {
  goog.fs.FileReader.superClass_.disposeInternal.call(this);
  delete this.reader_;
};
goog.fs.FileReader.prototype.readAsBinaryString = function(blob) {
  this.reader_.readAsBinaryString(blob);
};
goog.fs.FileReader.readAsBinaryString = function(blob) {
  var reader = new goog.fs.FileReader(), d = goog.fs.FileReader.createDeferred_(reader);
  reader.readAsBinaryString(blob);
  return d;
};
goog.fs.FileReader.prototype.readAsArrayBuffer = function(blob) {
  this.reader_.readAsArrayBuffer(blob);
};
goog.fs.FileReader.readAsArrayBuffer = function(blob) {
  var reader = new goog.fs.FileReader(), d = goog.fs.FileReader.createDeferred_(reader);
  reader.readAsArrayBuffer(blob);
  return d;
};
goog.fs.FileReader.prototype.readAsText = function(blob, opt_encoding) {
  this.reader_.readAsText(blob, opt_encoding);
};
goog.fs.FileReader.readAsText = function(blob, opt_encoding) {
  var reader = new goog.fs.FileReader(), d = goog.fs.FileReader.createDeferred_(reader);
  reader.readAsText(blob, opt_encoding);
  return d;
};
goog.fs.FileReader.prototype.readAsDataUrl = function(blob) {
  this.reader_.readAsDataURL(blob);
};
goog.fs.FileReader.readAsDataUrl = function(blob) {
  var reader = new goog.fs.FileReader(), d = goog.fs.FileReader.createDeferred_(reader);
  reader.readAsDataUrl(blob);
  return d;
};
goog.fs.FileReader.createDeferred_ = function(reader) {
  var deferred = new goog.async.Deferred();
  reader.listen(goog.fs.FileReader.EventType.LOAD_END, goog.partial(function(d, r, e) {
    var result = r.getResult(), error = r.getError();
    null == result || error ? d.errback(error) : d.callback(result);
    r.dispose();
  }, deferred, reader));
  return deferred;
};
goog.dom.vendor = {};
goog.dom.vendor.getVendorJsPrefix = function() {
  return goog.userAgent.WEBKIT ? "Webkit" : goog.userAgent.GECKO ? "Moz" : goog.userAgent.IE ? "ms" : null;
};
goog.dom.vendor.getVendorPrefix = function() {
  return goog.userAgent.WEBKIT ? "-webkit" : goog.userAgent.GECKO ? "-moz" : goog.userAgent.IE ? "-ms" : null;
};
goog.dom.vendor.getPrefixedPropertyName = function(propertyName, opt_object) {
  if (opt_object && propertyName in opt_object) {
    return propertyName;
  }
  var prefix = goog.dom.vendor.getVendorJsPrefix();
  if (prefix) {
    prefix = prefix.toLowerCase();
    var prefixedPropertyName = prefix + goog.string.toTitleCase(propertyName);
    return void 0 === opt_object || prefixedPropertyName in opt_object ? prefixedPropertyName : null;
  }
  return null;
};
goog.dom.vendor.getPrefixedEventType = function(eventType) {
  return ((goog.dom.vendor.getVendorJsPrefix() || "") + eventType).toLowerCase();
};
goog.math.Box = function(top, right, bottom, left) {
  this.top = top;
  this.right = right;
  this.bottom = bottom;
  this.left = left;
};
goog.math.Box.boundingBox = function(var_args) {
  for (var box = new goog.math.Box(arguments[0].y, arguments[0].x, arguments[0].y, arguments[0].x), i = 1; i < arguments.length; i++) {
    box.expandToIncludeCoordinate(arguments[i]);
  }
  return box;
};
goog.math.Box.prototype.getWidth = function() {
  return this.right - this.left;
};
goog.math.Box.prototype.getHeight = function() {
  return this.bottom - this.top;
};
goog.math.Box.prototype.clone = function() {
  return new goog.math.Box(this.top, this.right, this.bottom, this.left);
};
goog.DEBUG && (goog.math.Box.prototype.toString = function() {
  return "(" + this.top + "t, " + this.right + "r, " + this.bottom + "b, " + this.left + "l)";
});
goog.math.Box.prototype.contains = function(other) {
  return goog.math.Box.contains(this, other);
};
goog.math.Box.prototype.expand = function(top, opt_right, opt_bottom, opt_left) {
  goog.isObject(top) ? (this.top -= top.top, this.right += top.right, this.bottom += top.bottom, this.left -= top.left) : (this.top -= top, this.right += Number(opt_right), this.bottom += Number(opt_bottom), this.left -= Number(opt_left));
  return this;
};
goog.math.Box.prototype.expandToInclude = function(box) {
  this.left = Math.min(this.left, box.left);
  this.top = Math.min(this.top, box.top);
  this.right = Math.max(this.right, box.right);
  this.bottom = Math.max(this.bottom, box.bottom);
};
goog.math.Box.prototype.expandToIncludeCoordinate = function(coord) {
  this.top = Math.min(this.top, coord.y);
  this.right = Math.max(this.right, coord.x);
  this.bottom = Math.max(this.bottom, coord.y);
  this.left = Math.min(this.left, coord.x);
};
goog.math.Box.equals = function(a, b) {
  return a == b ? !0 : a && b ? a.top == b.top && a.right == b.right && a.bottom == b.bottom && a.left == b.left : !1;
};
goog.math.Box.contains = function(box, other) {
  return box && other ? other instanceof goog.math.Box ? other.left >= box.left && other.right <= box.right && other.top >= box.top && other.bottom <= box.bottom : other.x >= box.left && other.x <= box.right && other.y >= box.top && other.y <= box.bottom : !1;
};
goog.math.Box.relativePositionX = function(box, coord) {
  return coord.x < box.left ? coord.x - box.left : coord.x > box.right ? coord.x - box.right : 0;
};
goog.math.Box.relativePositionY = function(box, coord) {
  return coord.y < box.top ? coord.y - box.top : coord.y > box.bottom ? coord.y - box.bottom : 0;
};
goog.math.Box.distance = function(box, coord) {
  var x = goog.math.Box.relativePositionX(box, coord), y = goog.math.Box.relativePositionY(box, coord);
  return Math.sqrt(x * x + y * y);
};
goog.math.Box.intersects = function(a, b) {
  return a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom;
};
goog.math.Box.intersectsWithPadding = function(a, b, padding) {
  return a.left <= b.right + padding && b.left <= a.right + padding && a.top <= b.bottom + padding && b.top <= a.bottom + padding;
};
goog.math.Box.prototype.ceil = function() {
  this.top = Math.ceil(this.top);
  this.right = Math.ceil(this.right);
  this.bottom = Math.ceil(this.bottom);
  this.left = Math.ceil(this.left);
  return this;
};
goog.math.Box.prototype.floor = function() {
  this.top = Math.floor(this.top);
  this.right = Math.floor(this.right);
  this.bottom = Math.floor(this.bottom);
  this.left = Math.floor(this.left);
  return this;
};
goog.math.Box.prototype.round = function() {
  this.top = Math.round(this.top);
  this.right = Math.round(this.right);
  this.bottom = Math.round(this.bottom);
  this.left = Math.round(this.left);
  return this;
};
goog.math.Box.prototype.translate = function(tx, opt_ty) {
  tx instanceof goog.math.Coordinate ? (this.left += tx.x, this.right += tx.x, this.top += tx.y, this.bottom += tx.y) : (goog.asserts.assertNumber(tx), this.left += tx, this.right += tx, "number" === typeof opt_ty && (this.top += opt_ty, this.bottom += opt_ty));
  return this;
};
goog.math.Box.prototype.scale = function(sx, opt_sy) {
  var sy = "number" === typeof opt_sy ? opt_sy : sx;
  this.left *= sx;
  this.right *= sx;
  this.top *= sy;
  this.bottom *= sy;
  return this;
};
goog.math.IRect = function() {
};
goog.math.Rect = function(x, y, w, h) {
  this.left = x;
  this.top = y;
  this.width = w;
  this.height = h;
};
goog.math.Rect.prototype.clone = function() {
  return new goog.math.Rect(this.left, this.top, this.width, this.height);
};
goog.math.Rect.prototype.toBox = function() {
  return new goog.math.Box(this.top, this.left + this.width, this.top + this.height, this.left);
};
goog.math.Rect.createFromPositionAndSize = function(position, size) {
  return new goog.math.Rect(position.x, position.y, size.width, size.height);
};
goog.math.Rect.createFromBox = function(box) {
  return new goog.math.Rect(box.left, box.top, box.right - box.left, box.bottom - box.top);
};
goog.DEBUG && (goog.math.Rect.prototype.toString = function() {
  return "(" + this.left + ", " + this.top + " - " + this.width + "w x " + this.height + "h)";
});
goog.math.Rect.equals = function(a, b) {
  return a == b ? !0 : a && b ? a.left == b.left && a.width == b.width && a.top == b.top && a.height == b.height : !1;
};
goog.math.Rect.prototype.intersection = function(rect) {
  var x0 = Math.max(this.left, rect.left), x1 = Math.min(this.left + this.width, rect.left + rect.width);
  if (x0 <= x1) {
    var y0 = Math.max(this.top, rect.top), y1 = Math.min(this.top + this.height, rect.top + rect.height);
    if (y0 <= y1) {
      return this.left = x0, this.top = y0, this.width = x1 - x0, this.height = y1 - y0, !0;
    }
  }
  return !1;
};
goog.math.Rect.intersection = function(a, b) {
  var x0 = Math.max(a.left, b.left), x1 = Math.min(a.left + a.width, b.left + b.width);
  if (x0 <= x1) {
    var y0 = Math.max(a.top, b.top), y1 = Math.min(a.top + a.height, b.top + b.height);
    if (y0 <= y1) {
      return new goog.math.Rect(x0, y0, x1 - x0, y1 - y0);
    }
  }
  return null;
};
goog.math.Rect.intersects = function(a, b) {
  return a.left <= b.left + b.width && b.left <= a.left + a.width && a.top <= b.top + b.height && b.top <= a.top + a.height;
};
goog.math.Rect.prototype.intersects = function(rect) {
  return goog.math.Rect.intersects(this, rect);
};
goog.math.Rect.difference = function(a, b) {
  var intersection = goog.math.Rect.intersection(a, b);
  if (!intersection || !intersection.height || !intersection.width) {
    return [a.clone()];
  }
  var result = [], top = a.top, height = a.height, ar = a.left + a.width, ab = a.top + a.height, br = b.left + b.width, bb = b.top + b.height;
  b.top > a.top && (result.push(new goog.math.Rect(a.left, a.top, a.width, b.top - a.top)), top = b.top, height -= b.top - a.top);
  bb < ab && (result.push(new goog.math.Rect(a.left, bb, a.width, ab - bb)), height = bb - top);
  b.left > a.left && result.push(new goog.math.Rect(a.left, top, b.left - a.left, height));
  br < ar && result.push(new goog.math.Rect(br, top, ar - br, height));
  return result;
};
goog.math.Rect.prototype.difference = function(rect) {
  return goog.math.Rect.difference(this, rect);
};
goog.math.Rect.prototype.boundingRect = function(rect) {
  var right = Math.max(this.left + this.width, rect.left + rect.width), bottom = Math.max(this.top + this.height, rect.top + rect.height);
  this.left = Math.min(this.left, rect.left);
  this.top = Math.min(this.top, rect.top);
  this.width = right - this.left;
  this.height = bottom - this.top;
};
goog.math.Rect.boundingRect = function(a, b) {
  if (!a || !b) {
    return null;
  }
  var newRect = new goog.math.Rect(a.left, a.top, a.width, a.height);
  newRect.boundingRect(b);
  return newRect;
};
goog.math.Rect.prototype.contains = function(another) {
  return another instanceof goog.math.Coordinate ? another.x >= this.left && another.x <= this.left + this.width && another.y >= this.top && another.y <= this.top + this.height : this.left <= another.left && this.left + this.width >= another.left + another.width && this.top <= another.top && this.top + this.height >= another.top + another.height;
};
goog.math.Rect.prototype.squaredDistance = function(point) {
  var dx = point.x < this.left ? this.left - point.x : Math.max(point.x - (this.left + this.width), 0), dy = point.y < this.top ? this.top - point.y : Math.max(point.y - (this.top + this.height), 0);
  return dx * dx + dy * dy;
};
goog.math.Rect.prototype.distance = function(point) {
  return Math.sqrt(this.squaredDistance(point));
};
goog.math.Rect.prototype.getSize = function() {
  return new goog.math.Size(this.width, this.height);
};
goog.math.Rect.prototype.getTopLeft = function() {
  return new goog.math.Coordinate(this.left, this.top);
};
goog.math.Rect.prototype.getCenter = function() {
  return new goog.math.Coordinate(this.left + this.width / 2, this.top + this.height / 2);
};
goog.math.Rect.prototype.getBottomRight = function() {
  return new goog.math.Coordinate(this.left + this.width, this.top + this.height);
};
goog.math.Rect.prototype.ceil = function() {
  this.left = Math.ceil(this.left);
  this.top = Math.ceil(this.top);
  this.width = Math.ceil(this.width);
  this.height = Math.ceil(this.height);
  return this;
};
goog.math.Rect.prototype.floor = function() {
  this.left = Math.floor(this.left);
  this.top = Math.floor(this.top);
  this.width = Math.floor(this.width);
  this.height = Math.floor(this.height);
  return this;
};
goog.math.Rect.prototype.round = function() {
  this.left = Math.round(this.left);
  this.top = Math.round(this.top);
  this.width = Math.round(this.width);
  this.height = Math.round(this.height);
  return this;
};
goog.math.Rect.prototype.translate = function(tx, opt_ty) {
  tx instanceof goog.math.Coordinate ? (this.left += tx.x, this.top += tx.y) : (this.left += goog.asserts.assertNumber(tx), "number" === typeof opt_ty && (this.top += opt_ty));
  return this;
};
goog.math.Rect.prototype.scale = function(sx, opt_sy) {
  var sy = "number" === typeof opt_sy ? opt_sy : sx;
  this.left *= sx;
  this.width *= sx;
  this.top *= sy;
  this.height *= sy;
  return this;
};
goog.style = {};
goog.style.setStyle = function(element, style, opt_value) {
  if ("string" === typeof style) {
    goog.style.setStyle_(element, opt_value, style);
  } else {
    for (var key in style) {
      goog.style.setStyle_(element, style[key], key);
    }
  }
};
goog.style.setStyle_ = function(element, value, style) {
  var propertyName = goog.style.getVendorJsStyleName_(element, style);
  propertyName && (element.style[propertyName] = value);
};
goog.style.styleNameCache_ = {};
goog.style.getVendorJsStyleName_ = function(element, style) {
  var propertyName = goog.style.styleNameCache_[style];
  if (!propertyName) {
    var camelStyle = goog.string.toCamelCase(style);
    propertyName = camelStyle;
    if (void 0 === element.style[camelStyle]) {
      var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(camelStyle);
      void 0 !== element.style[prefixedStyle] && (propertyName = prefixedStyle);
    }
    goog.style.styleNameCache_[style] = propertyName;
  }
  return propertyName;
};
goog.style.getVendorStyleName_ = function(element, style) {
  var camelStyle = goog.string.toCamelCase(style);
  if (void 0 === element.style[camelStyle]) {
    var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(camelStyle);
    if (void 0 !== element.style[prefixedStyle]) {
      return goog.dom.vendor.getVendorPrefix() + "-" + style;
    }
  }
  return style;
};
goog.style.getStyle = function(element, property) {
  var styleValue = element.style[goog.string.toCamelCase(property)];
  return "undefined" !== typeof styleValue ? styleValue : element.style[goog.style.getVendorJsStyleName_(element, property)] || "";
};
goog.style.getComputedStyle = function(element, property) {
  var doc = goog.dom.getOwnerDocument(element);
  if (doc.defaultView && doc.defaultView.getComputedStyle) {
    var styles = doc.defaultView.getComputedStyle(element, null);
    if (styles) {
      return styles[property] || styles.getPropertyValue(property) || "";
    }
  }
  return "";
};
goog.style.getCascadedStyle = function(element, style) {
  return element.currentStyle ? element.currentStyle[style] : null;
};
goog.style.getStyle_ = function(element, style) {
  return goog.style.getComputedStyle(element, style) || goog.style.getCascadedStyle(element, style) || element.style && element.style[style];
};
goog.style.getComputedBoxSizing = function(element) {
  return goog.style.getStyle_(element, "boxSizing") || goog.style.getStyle_(element, "MozBoxSizing") || goog.style.getStyle_(element, "WebkitBoxSizing") || null;
};
goog.style.getComputedPosition = function(element) {
  return goog.style.getStyle_(element, "position");
};
goog.style.getBackgroundColor = function(element) {
  return goog.style.getStyle_(element, "backgroundColor");
};
goog.style.getComputedOverflowX = function(element) {
  return goog.style.getStyle_(element, "overflowX");
};
goog.style.getComputedOverflowY = function(element) {
  return goog.style.getStyle_(element, "overflowY");
};
goog.style.getComputedZIndex = function(element) {
  return goog.style.getStyle_(element, "zIndex");
};
goog.style.getComputedTextAlign = function(element) {
  return goog.style.getStyle_(element, "textAlign");
};
goog.style.getComputedCursor = function(element) {
  return goog.style.getStyle_(element, "cursor");
};
goog.style.getComputedTransform = function(element) {
  var property = goog.style.getVendorStyleName_(element, "transform");
  return goog.style.getStyle_(element, property) || goog.style.getStyle_(element, "transform");
};
goog.style.setPosition = function(el, arg1, opt_arg2) {
  if (arg1 instanceof goog.math.Coordinate) {
    var x = arg1.x;
    var y = arg1.y;
  } else {
    x = arg1, y = opt_arg2;
  }
  el.style.left = goog.style.getPixelStyleValue_(x, !1);
  el.style.top = goog.style.getPixelStyleValue_(y, !1);
};
goog.style.getPosition = function(element) {
  return new goog.math.Coordinate(element.offsetLeft, element.offsetTop);
};
goog.style.getClientViewportElement = function(opt_node) {
  return (opt_node ? goog.dom.getOwnerDocument(opt_node) : goog.dom.getDocument()).documentElement;
};
goog.style.getViewportPageOffset = function(doc) {
  var body = doc.body, documentElement = doc.documentElement;
  return new goog.math.Coordinate(body.scrollLeft || documentElement.scrollLeft, body.scrollTop || documentElement.scrollTop);
};
goog.style.getBoundingClientRect_ = function(el) {
  try {
    return el.getBoundingClientRect();
  } catch (e) {
    return {left:0, top:0, right:0, bottom:0};
  }
};
goog.style.getOffsetParent = function(element) {
  for (var doc = goog.dom.getOwnerDocument(element), positionStyle = goog.style.getStyle_(element, "position"), skipStatic = "fixed" == positionStyle || "absolute" == positionStyle, parent = element.parentNode; parent && parent != doc; parent = parent.parentNode) {
    if (parent.nodeType == goog.dom.NodeType.DOCUMENT_FRAGMENT && parent.host && (parent = parent.host), positionStyle = goog.style.getStyle_(parent, "position"), skipStatic = skipStatic && "static" == positionStyle && parent != doc.documentElement && parent != doc.body, !skipStatic && (parent.scrollWidth > parent.clientWidth || parent.scrollHeight > parent.clientHeight || "fixed" == positionStyle || "absolute" == positionStyle || "relative" == positionStyle)) {
      return parent;
    }
  }
  return null;
};
goog.style.getVisibleRectForElement = function(element) {
  for (var visibleRect = new goog.math.Box(0, Infinity, Infinity, 0), dom = goog.dom.getDomHelper(element), body = dom.getDocument().body, documentElement = dom.getDocument().documentElement, scrollEl = dom.getDocumentScrollElement(), el = element; el = goog.style.getOffsetParent(el);) {
    if ((!goog.userAgent.WEBKIT || 0 != el.clientHeight || el != body) && el != body && el != documentElement && "visible" != goog.style.getStyle_(el, "overflow")) {
      var pos = goog.style.getPageOffset(el), client = goog.style.getClientLeftTop(el);
      pos.x += client.x;
      pos.y += client.y;
      visibleRect.top = Math.max(visibleRect.top, pos.y);
      visibleRect.right = Math.min(visibleRect.right, pos.x + el.clientWidth);
      visibleRect.bottom = Math.min(visibleRect.bottom, pos.y + el.clientHeight);
      visibleRect.left = Math.max(visibleRect.left, pos.x);
    }
  }
  var scrollX = scrollEl.scrollLeft, scrollY = scrollEl.scrollTop;
  visibleRect.left = Math.max(visibleRect.left, scrollX);
  visibleRect.top = Math.max(visibleRect.top, scrollY);
  var winSize = dom.getViewportSize();
  visibleRect.right = Math.min(visibleRect.right, scrollX + winSize.width);
  visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + winSize.height);
  return 0 <= visibleRect.top && 0 <= visibleRect.left && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;
};
goog.style.getContainerOffsetToScrollInto = function(element, opt_container, opt_center) {
  var container = opt_container || goog.dom.getDocumentScrollElement(), elementPos = goog.style.getPageOffset(element), containerPos = goog.style.getPageOffset(container), containerBorder = goog.style.getBorderBox(container);
  if (container == goog.dom.getDocumentScrollElement()) {
    var relX = elementPos.x - container.scrollLeft, relY = elementPos.y - container.scrollTop;
  } else {
    relX = elementPos.x - containerPos.x - containerBorder.left, relY = elementPos.y - containerPos.y - containerBorder.top;
  }
  var elementSize = goog.style.getSizeWithDisplay_(element), spaceX = container.clientWidth - elementSize.width, spaceY = container.clientHeight - elementSize.height, scrollLeft = container.scrollLeft, scrollTop = container.scrollTop;
  opt_center ? (scrollLeft += relX - spaceX / 2, scrollTop += relY - spaceY / 2) : (scrollLeft += Math.min(relX, Math.max(relX - spaceX, 0)), scrollTop += Math.min(relY, Math.max(relY - spaceY, 0)));
  return new goog.math.Coordinate(scrollLeft, scrollTop);
};
goog.style.scrollIntoContainerView = function(element, opt_container, opt_center) {
  var container = opt_container || goog.dom.getDocumentScrollElement(), offset = goog.style.getContainerOffsetToScrollInto(element, container, opt_center);
  container.scrollLeft = offset.x;
  container.scrollTop = offset.y;
};
goog.style.getClientLeftTop = function(el) {
  return new goog.math.Coordinate(el.clientLeft, el.clientTop);
};
goog.style.getPageOffset = function(el) {
  var doc = goog.dom.getOwnerDocument(el);
  goog.asserts.assertObject(el, "Parameter is required");
  var pos = new goog.math.Coordinate(0, 0), viewportElement = goog.style.getClientViewportElement(doc);
  if (el == viewportElement) {
    return pos;
  }
  var box = goog.style.getBoundingClientRect_(el), scrollCoord = goog.dom.getDomHelper(doc).getDocumentScroll();
  pos.x = box.left + scrollCoord.x;
  pos.y = box.top + scrollCoord.y;
  return pos;
};
goog.style.getPageOffsetLeft = function(el) {
  return goog.style.getPageOffset(el).x;
};
goog.style.getPageOffsetTop = function(el) {
  return goog.style.getPageOffset(el).y;
};
goog.style.getFramedPageOffset = function(el, relativeWin) {
  var position = new goog.math.Coordinate(0, 0), currentWin = goog.dom.getWindow(goog.dom.getOwnerDocument(el));
  if (!goog.reflect.canAccessProperty(currentWin, "parent")) {
    return position;
  }
  var currentEl = el;
  do {
    var offset = currentWin == relativeWin ? goog.style.getPageOffset(currentEl) : goog.style.getClientPositionForElement_(goog.asserts.assert(currentEl));
    position.x += offset.x;
    position.y += offset.y;
  } while (currentWin && currentWin != relativeWin && currentWin != currentWin.parent && (currentEl = currentWin.frameElement) && (currentWin = currentWin.parent));
  return position;
};
goog.style.translateRectForAnotherFrame = function(rect, origBase, newBase) {
  if (origBase.getDocument() != newBase.getDocument()) {
    var body = origBase.getDocument().body, pos = goog.style.getFramedPageOffset(body, newBase.getWindow());
    pos = goog.math.Coordinate.difference(pos, goog.style.getPageOffset(body));
    rect.left += pos.x;
    rect.top += pos.y;
  }
};
goog.style.getRelativePosition = function(a, b) {
  var ap = goog.style.getClientPosition(a), bp = goog.style.getClientPosition(b);
  return new goog.math.Coordinate(ap.x - bp.x, ap.y - bp.y);
};
goog.style.getClientPositionForElement_ = function(el) {
  var box = goog.style.getBoundingClientRect_(el);
  return new goog.math.Coordinate(box.left, box.top);
};
goog.style.getClientPosition = function(el) {
  goog.asserts.assert(el);
  if (el.nodeType == goog.dom.NodeType.ELEMENT) {
    return goog.style.getClientPositionForElement_(el);
  }
  var targetEvent = el.changedTouches ? el.changedTouches[0] : el;
  return new goog.math.Coordinate(targetEvent.clientX, targetEvent.clientY);
};
goog.style.setPageOffset = function(el, x, opt_y) {
  var cur = goog.style.getPageOffset(el);
  x instanceof goog.math.Coordinate && (opt_y = x.y, x = x.x);
  var dx = goog.asserts.assertNumber(x) - cur.x;
  goog.style.setPosition(el, el.offsetLeft + dx, el.offsetTop + (Number(opt_y) - cur.y));
};
goog.style.setSize = function(element, w, opt_h) {
  if (w instanceof goog.math.Size) {
    var h = w.height;
    w = w.width;
  } else {
    if (void 0 == opt_h) {
      throw Error("missing height argument");
    }
    h = opt_h;
  }
  goog.style.setWidth(element, w);
  goog.style.setHeight(element, h);
};
goog.style.getPixelStyleValue_ = function(value, round) {
  "number" == typeof value && (value = (round ? Math.round(value) : value) + "px");
  return value;
};
goog.style.setHeight = function(element, height) {
  element.style.height = goog.style.getPixelStyleValue_(height, !0);
};
goog.style.setWidth = function(element, width) {
  element.style.width = goog.style.getPixelStyleValue_(width, !0);
};
goog.style.getSize = function(element) {
  return goog.style.evaluateWithTemporaryDisplay_(goog.style.getSizeWithDisplay_, element);
};
goog.style.evaluateWithTemporaryDisplay_ = function(fn, element) {
  if ("none" != goog.style.getStyle_(element, "display")) {
    return fn(element);
  }
  var style = element.style, originalDisplay = style.display, originalVisibility = style.visibility, originalPosition = style.position;
  style.visibility = "hidden";
  style.position = "absolute";
  style.display = "inline";
  var retVal = fn(element);
  style.display = originalDisplay;
  style.position = originalPosition;
  style.visibility = originalVisibility;
  return retVal;
};
goog.style.getSizeWithDisplay_ = function(element) {
  var offsetWidth = element.offsetWidth, offsetHeight = element.offsetHeight, webkitOffsetsZero = goog.userAgent.WEBKIT && !offsetWidth && !offsetHeight;
  if ((void 0 === offsetWidth || webkitOffsetsZero) && element.getBoundingClientRect) {
    var clientRect = goog.style.getBoundingClientRect_(element);
    return new goog.math.Size(clientRect.right - clientRect.left, clientRect.bottom - clientRect.top);
  }
  return new goog.math.Size(offsetWidth, offsetHeight);
};
goog.style.getTransformedSize = function(element) {
  if (!element.getBoundingClientRect) {
    return null;
  }
  var clientRect = goog.style.evaluateWithTemporaryDisplay_(goog.style.getBoundingClientRect_, element);
  return new goog.math.Size(clientRect.right - clientRect.left, clientRect.bottom - clientRect.top);
};
goog.style.getBounds = function(element) {
  var o = goog.style.getPageOffset(element), s = goog.style.getSize(element);
  return new goog.math.Rect(o.x, o.y, s.width, s.height);
};
goog.style.toCamelCase = function(selector) {
  return goog.string.toCamelCase(String(selector));
};
goog.style.toSelectorCase = function(selector) {
  return goog.string.toSelectorCase(selector);
};
goog.style.getOpacity = function(el) {
  goog.asserts.assert(el);
  var style = el.style, result = "";
  if ("opacity" in style) {
    result = style.opacity;
  } else if ("MozOpacity" in style) {
    result = style.MozOpacity;
  } else if ("filter" in style) {
    var match = style.filter.match(/alpha\(opacity=([\d.]+)\)/);
    match && (result = String(match[1] / 100));
  }
  return "" == result ? result : Number(result);
};
goog.style.setOpacity = function(el, alpha) {
  goog.asserts.assert(el);
  var style = el.style;
  "opacity" in style ? style.opacity = alpha : "MozOpacity" in style ? style.MozOpacity = alpha : "filter" in style && (style.filter = "" === alpha ? "" : "alpha(opacity=" + 100 * Number(alpha) + ")");
};
goog.style.setTransparentBackgroundImage = function(el, src) {
  var style = el.style;
  style.backgroundImage = "url(" + src + ")";
  style.backgroundPosition = "top left";
  style.backgroundRepeat = "no-repeat";
};
goog.style.clearTransparentBackgroundImage = function(el) {
  var style = el.style;
  "filter" in style ? style.filter = "" : style.backgroundImage = "none";
};
goog.style.showElement = function(el, display) {
  goog.style.setElementShown(el, display);
};
goog.style.setElementShown = function(el, isShown) {
  el.style.display = isShown ? "" : "none";
};
goog.style.isElementShown = function(el) {
  return "none" != el.style.display;
};
goog.style.installSafeStyleSheet = function(safeStyleSheet, opt_node) {
  var dh = goog.dom.getDomHelper(opt_node), head = dh.getElementsByTagNameAndClass(goog.dom.TagName.HEAD)[0];
  if (!head) {
    var body = dh.getElementsByTagNameAndClass(goog.dom.TagName.BODY)[0];
    head = dh.createDom(goog.dom.TagName.HEAD);
    body.parentNode.insertBefore(head, body);
  }
  var el = dh.createDom(goog.dom.TagName.STYLE), nonce = goog.dom.safe.getStyleNonce();
  nonce && el.setAttribute("nonce", nonce);
  goog.style.setSafeStyleSheet(el, safeStyleSheet);
  dh.appendChild(head, el);
  return el;
};
goog.style.uninstallStyles = function(styleSheet) {
  goog.dom.removeNode(styleSheet.ownerNode || styleSheet.owningElement || styleSheet);
};
goog.style.setSafeStyleSheet = function(element, safeStyleSheet) {
  var stylesString = module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(safeStyleSheet);
  goog.global.trustedTypes ? goog.dom.setTextContent(element, stylesString) : element.innerHTML = stylesString;
};
goog.style.setPreWrap = function(el) {
  el.style.whiteSpace = goog.userAgent.GECKO ? "-moz-pre-wrap" : "pre-wrap";
};
goog.style.setInlineBlock = function(el) {
  var style = el.style;
  style.position = "relative";
  style.display = "inline-block";
};
goog.style.isRightToLeft = function(el) {
  return "rtl" == goog.style.getStyle_(el, "direction");
};
goog.style.unselectableStyle_ = goog.userAgent.GECKO ? "MozUserSelect" : goog.userAgent.WEBKIT || goog.userAgent.EDGE ? "WebkitUserSelect" : null;
goog.style.isUnselectable = function(el) {
  return !(!goog.style.unselectableStyle_ || "none" != el.style[goog.style.unselectableStyle_].toLowerCase());
};
goog.style.setUnselectable = function(el, unselectable, opt_noRecurse) {
  var descendants = opt_noRecurse ? null : el.getElementsByTagName("*"), name = goog.style.unselectableStyle_;
  if (name) {
    var value = unselectable ? "none" : "";
    el.style && (el.style[name] = value);
    if (descendants) {
      for (var i = 0, descendant; descendant = descendants[i]; i++) {
        descendant.style && (descendant.style[name] = value);
      }
    }
  }
};
goog.style.getBorderBoxSize = function(element) {
  return new goog.math.Size(element.offsetWidth, element.offsetHeight);
};
goog.style.setBorderBoxSize = function(element, size) {
  goog.style.setBoxSizingSize_(element, size, "border-box");
};
goog.style.getContentBoxSize = function(element) {
  var borderBoxSize = goog.style.getBorderBoxSize(element), paddingBox = goog.style.getPaddingBox(element), borderBox = goog.style.getBorderBox(element);
  return new goog.math.Size(borderBoxSize.width - borderBox.left - paddingBox.left - paddingBox.right - borderBox.right, borderBoxSize.height - borderBox.top - paddingBox.top - paddingBox.bottom - borderBox.bottom);
};
goog.style.setContentBoxSize = function(element, size) {
  goog.style.setBoxSizingSize_(element, size, "content-box");
};
goog.style.setBoxSizingSize_ = function(element, size, boxSizing) {
  var style = element.style;
  goog.userAgent.GECKO ? style.MozBoxSizing = boxSizing : goog.userAgent.WEBKIT ? style.WebkitBoxSizing = boxSizing : style.boxSizing = boxSizing;
  style.width = Math.max(size.width, 0) + "px";
  style.height = Math.max(size.height, 0) + "px";
};
goog.style.getIePixelValue_ = function(element, value, name, pixelName) {
  if (/^\d+px?$/.test(value)) {
    return parseInt(value, 10);
  }
  var oldStyleValue = element.style[name], oldRuntimeValue = element.runtimeStyle[name];
  element.runtimeStyle[name] = element.currentStyle[name];
  element.style[name] = value;
  var pixelValue = element.style[pixelName];
  element.style[name] = oldStyleValue;
  element.runtimeStyle[name] = oldRuntimeValue;
  return +pixelValue;
};
goog.style.getIePixelDistance_ = function(element, propName) {
  var value = goog.style.getCascadedStyle(element, propName);
  return value ? goog.style.getIePixelValue_(element, value, "left", "pixelLeft") : 0;
};
goog.style.getBox_ = function(element, stylePrefix) {
  var left = goog.style.getComputedStyle(element, stylePrefix + "Left"), right = goog.style.getComputedStyle(element, stylePrefix + "Right"), top = goog.style.getComputedStyle(element, stylePrefix + "Top"), bottom = goog.style.getComputedStyle(element, stylePrefix + "Bottom");
  return new goog.math.Box(parseFloat(top), parseFloat(right), parseFloat(bottom), parseFloat(left));
};
goog.style.getPaddingBox = function(element) {
  return goog.style.getBox_(element, "padding");
};
goog.style.getMarginBox = function(element) {
  return goog.style.getBox_(element, "margin");
};
goog.style.ieBorderWidthKeywords_ = {thin:2, medium:4, thick:6};
goog.style.getIePixelBorder_ = function(element, prop) {
  if ("none" == goog.style.getCascadedStyle(element, prop + "Style")) {
    return 0;
  }
  var width = goog.style.getCascadedStyle(element, prop + "Width");
  return width in goog.style.ieBorderWidthKeywords_ ? goog.style.ieBorderWidthKeywords_[width] : goog.style.getIePixelValue_(element, width, "left", "pixelLeft");
};
goog.style.getBorderBox = function(element) {
  var left = goog.style.getComputedStyle(element, "borderLeftWidth"), right = goog.style.getComputedStyle(element, "borderRightWidth"), top = goog.style.getComputedStyle(element, "borderTopWidth"), bottom = goog.style.getComputedStyle(element, "borderBottomWidth");
  return new goog.math.Box(parseFloat(top), parseFloat(right), parseFloat(bottom), parseFloat(left));
};
goog.style.getFontFamily = function(el) {
  var doc = goog.dom.getOwnerDocument(el), font = "";
  if (doc.body.createTextRange && goog.dom.contains(doc, el)) {
    var range = doc.body.createTextRange();
    range.moveToElementText(el);
    try {
      font = range.queryCommandValue("FontName");
    } catch (e) {
      font = "";
    }
  }
  font || (font = goog.style.getStyle_(el, "fontFamily"));
  var fontsArray = font.split(",");
  1 < fontsArray.length && (font = fontsArray[0]);
  return goog.string.stripQuotes(font, "\"'");
};
goog.style.lengthUnitRegex_ = /[^\d]+$/;
goog.style.getLengthUnits = function(value) {
  var units = value.match(goog.style.lengthUnitRegex_);
  return units && units[0] || null;
};
goog.style.ABSOLUTE_CSS_LENGTH_UNITS_ = {cm:1, "in":1, mm:1, pc:1, pt:1};
goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_ = {em:1, ex:1};
goog.style.getFontSize = function(el) {
  var fontSize = goog.style.getStyle_(el, "fontSize"), sizeUnits = goog.style.getLengthUnits(fontSize);
  if (fontSize && "px" == sizeUnits) {
    return parseInt(fontSize, 10);
  }
  var sizeElement = goog.dom.createDom(goog.dom.TagName.SPAN, {style:"visibility:hidden;position:absolute;line-height:0;padding:0;margin:0;border:0;height:1em;"});
  goog.dom.appendChild(el, sizeElement);
  fontSize = sizeElement.offsetHeight;
  goog.dom.removeNode(sizeElement);
  return fontSize;
};
goog.style.parseStyleAttribute = function(value) {
  var result = {};
  value.split(/\s*;\s*/).forEach(function(pair) {
    var keyValue = pair.match(/\s*([\w-]+)\s*:(.+)/);
    if (keyValue) {
      var styleValue = goog.string.trim(keyValue[2]);
      result[goog.string.toCamelCase(keyValue[1].toLowerCase())] = styleValue;
    }
  });
  return result;
};
goog.style.toStyleAttribute = function(obj) {
  var buffer = [];
  module$contents$goog$object_forEach(obj, function(value, key) {
    buffer.push(goog.string.toSelectorCase(key), ":", value, ";");
  });
  return buffer.join("");
};
goog.style.setFloat = function(el, value) {
  el.style.cssFloat = value;
};
goog.style.getFloat = function(el) {
  return el.style.cssFloat || "";
};
goog.style.getScrollbarWidth = function(opt_className) {
  var outerDiv = goog.dom.createElement(goog.dom.TagName.DIV);
  opt_className && (outerDiv.className = opt_className);
  outerDiv.style.cssText = "overflow:auto;position:absolute;top:0;width:100px;height:100px";
  var innerDiv = goog.dom.createElement(goog.dom.TagName.DIV);
  goog.style.setSize(innerDiv, "200px", "200px");
  outerDiv.appendChild(innerDiv);
  goog.dom.appendChild(goog.dom.getDocument().body, outerDiv);
  var width = outerDiv.offsetWidth - outerDiv.clientWidth;
  goog.dom.removeNode(outerDiv);
  return width;
};
goog.style.MATRIX_TRANSLATION_REGEX_ = RegExp("matrix\\([0-9\\.\\-]+, [0-9\\.\\-]+, [0-9\\.\\-]+, [0-9\\.\\-]+, ([0-9\\.\\-]+)p?x?, ([0-9\\.\\-]+)p?x?\\)");
goog.style.getCssTranslation = function(element) {
  var transform = goog.style.getComputedTransform(element);
  if (!transform) {
    return new goog.math.Coordinate(0, 0);
  }
  var matches = transform.match(goog.style.MATRIX_TRANSLATION_REGEX_);
  return matches ? new goog.math.Coordinate(parseFloat(matches[1]), parseFloat(matches[2])) : new goog.math.Coordinate(0, 0);
};
ee.layers.AbstractOverlay = function(tileSource, opt_options) {
  goog.events.EventTarget.call(this);
  var options = opt_options || {};
  this.minZoom = options.minZoom || 0;
  this.maxZoom = options.maxZoom || 20;
  if (!window.google || !window.google.maps) {
    throw Error("Google Maps API hasn't been initialized.");
  }
  this.tileSize = options.tileSize || new google.maps.Size(ee.layers.AbstractOverlay.DEFAULT_TILE_EDGE_LENGTH, ee.layers.AbstractOverlay.DEFAULT_TILE_EDGE_LENGTH);
  this.isPng = "isPng" in options ? options.isPng : !0;
  this.name = options.name;
  this.opacity = "opacity" in options ? options.opacity : 1;
  this.stats = new module$contents$ee$layers$AbstractOverlayStats_AbstractOverlayStats(tileSource.getUniqueId());
  this.tilesById = new goog.structs.Map();
  this.tileCounter = 0;
  this.tileSource = tileSource;
  this.handler = new goog.events.EventHandler(this);
  this.radius = 0;
};
$jscomp.inherits(ee.layers.AbstractOverlay, goog.events.EventTarget);
ee.layers.AbstractOverlay.prototype.addTileCallback = function(callback) {
  return goog.events.listen(this, ee.layers.AbstractOverlay.EventType.TILE_LOAD, callback);
};
ee.layers.AbstractOverlay.prototype.removeTileCallback = function(callbackId) {
  goog.events.unlistenByKey(callbackId);
};
ee.layers.AbstractOverlay.prototype.getLoadingTilesCount = function() {
  return this.getTileCountForStatus_(ee.layers.AbstractTile.Status.THROTTLED) + this.getTileCountForStatus_(ee.layers.AbstractTile.Status.LOADING) + this.getTileCountForStatus_(ee.layers.AbstractTile.Status.NEW);
};
ee.layers.AbstractOverlay.prototype.getFailedTilesCount = function() {
  return this.getTileCountForStatus_(ee.layers.AbstractTile.Status.FAILED);
};
ee.layers.AbstractOverlay.prototype.getLoadedTilesCount = function() {
  return this.getTileCountForStatus_(ee.layers.AbstractTile.Status.LOADED);
};
ee.layers.AbstractOverlay.prototype.setOpacity = function(opacity) {
  this.opacity = opacity;
  this.tilesById.forEach(function(tile) {
    goog.style.setOpacity(tile.div, this.opacity);
  }, this);
};
ee.layers.AbstractOverlay.prototype.getTilesById = function() {
  return this.tilesById;
};
ee.layers.AbstractOverlay.prototype.getStats = function() {
  return this.stats;
};
ee.layers.AbstractOverlay.prototype.getTile = function(coord, zoom, ownerDocument) {
  var maxCoord = 1 << zoom;
  if (zoom < this.minZoom || 0 > coord.y || coord.y >= maxCoord) {
    return ownerDocument.createElement("div");
  }
  var x = coord.x % maxCoord;
  0 > x && (x += maxCoord);
  var normalizedCoord = new google.maps.Point(x, coord.y), uniqueId = this.getUniqueTileId_(coord, zoom), tile = this.createTile(normalizedCoord, zoom, ownerDocument, uniqueId);
  tile.tileSize = this.tileSize;
  goog.style.setOpacity(tile.div, this.opacity);
  this.tilesById.set(uniqueId, tile);
  this.registerStatusChangeListener_(tile);
  this.dispatchEvent(new ee.layers.TileStartEvent(this.getLoadingTilesCount()));
  this.tileSource.loadTile(tile, (new Date()).getTime() / 1E3);
  return tile.div;
};
ee.layers.AbstractOverlay.prototype.releaseTile = function(tileDiv) {
  var tile = this.tilesById.get(tileDiv.id);
  this.tilesById.remove(tileDiv.id);
  tile && (tile.abort(), module$contents$goog$dispose_dispose(tile));
};
ee.layers.AbstractOverlay.prototype.registerStatusChangeListener_ = function(tile) {
  this.handler.listen(tile, ee.layers.AbstractTile.EventType.STATUS_CHANGED, function() {
    var Status = ee.layers.AbstractTile.Status;
    switch(tile.getStatus()) {
      case Status.LOADED:
        this.stats.addTileStats(tile.loadingStartTs_, (new Date()).getTime(), tile.zoom);
        this.dispatchEvent(new ee.layers.TileLoadEvent(this.getLoadingTilesCount()));
        break;
      case Status.THROTTLED:
        this.stats.incrementThrottleCounter(tile.zoom);
        this.dispatchEvent(new ee.layers.TileThrottleEvent(tile.sourceUrl));
        break;
      case Status.FAILED:
        this.stats.incrementErrorCounter(tile.zoom);
        this.dispatchEvent(new ee.layers.TileFailEvent(tile.sourceUrl, tile.errorMessage_));
        break;
      case Status.ABORTED:
        this.dispatchEvent(new ee.layers.TileAbortEvent(this.getLoadingTilesCount()));
    }
  });
};
ee.layers.AbstractOverlay.prototype.getUniqueTileId_ = function(coord, z) {
  var tileId = [coord.x, coord.y, z, this.tileCounter++].join("-"), sourceId = this.tileSource.getUniqueId();
  return [tileId, sourceId].join("-");
};
ee.layers.AbstractOverlay.prototype.disposeInternal = function() {
  goog.events.EventTarget.prototype.disposeInternal.call(this);
  this.tilesById.forEach(module$contents$goog$dispose_dispose);
  this.tilesById.clear();
  this.tilesById = null;
  module$contents$goog$dispose_dispose(this.handler);
  this.tileSource = this.handler = null;
};
ee.layers.AbstractOverlay.prototype.getTileCountForStatus_ = function(status) {
  return module$contents$goog$array_count(this.tilesById.getValues(), function(tile) {
    return tile.getStatus() == status;
  });
};
goog.exportSymbol("ee.layers.AbstractOverlay", ee.layers.AbstractOverlay);
goog.exportProperty(ee.layers.AbstractOverlay.prototype, "removeTileCallback", ee.layers.AbstractOverlay.prototype.removeTileCallback);
goog.exportProperty(ee.layers.AbstractOverlay.prototype, "addTileCallback", ee.layers.AbstractOverlay.prototype.addTileCallback);
ee.layers.AbstractOverlay.EventType = {TILE_FAIL:"tile-fail", TILE_ABORT:"tile-abort", TILE_THROTTLE:"tile-throttle", TILE_LOAD:"tile-load", TILE_START:"tile-start"};
ee.layers.AbstractOverlay.DEFAULT_TILE_EDGE_LENGTH = 256;
ee.layers.TileLoadEvent = function(loadingTileCount) {
  goog.events.Event.call(this, ee.layers.AbstractOverlay.EventType.TILE_LOAD);
  this.loadingTileCount = loadingTileCount;
};
$jscomp.inherits(ee.layers.TileLoadEvent, goog.events.Event);
ee.layers.TileStartEvent = function(loadingTileCount) {
  goog.events.Event.call(this, ee.layers.AbstractOverlay.EventType.TILE_START);
  this.loadingTileCount = loadingTileCount;
};
$jscomp.inherits(ee.layers.TileStartEvent, goog.events.Event);
ee.layers.TileThrottleEvent = function(tileUrl) {
  goog.events.Event.call(this, ee.layers.AbstractOverlay.EventType.TILE_THROTTLE);
  this.tileUrl = tileUrl;
};
$jscomp.inherits(ee.layers.TileThrottleEvent, goog.events.Event);
ee.layers.TileFailEvent = function(tileUrl, opt_errorMessage) {
  goog.events.Event.call(this, ee.layers.AbstractOverlay.EventType.TILE_FAIL);
  this.tileUrl = tileUrl;
  this.errorMessage = opt_errorMessage;
};
$jscomp.inherits(ee.layers.TileFailEvent, goog.events.Event);
ee.layers.TileAbortEvent = function(loadingTileCount) {
  goog.events.Event.call(this, ee.layers.AbstractOverlay.EventType.TILE_ABORT);
  this.loadingTileCount = loadingTileCount;
};
$jscomp.inherits(ee.layers.TileAbortEvent, goog.events.Event);
ee.layers.AbstractTile = function(coord, zoom, ownerDocument, uniqueId) {
  goog.events.EventTarget.call(this);
  this.coord = coord;
  this.zoom = zoom;
  this.div = ownerDocument.createElement("div");
  this.div.id = uniqueId;
  this.maxRetries = ee.layers.AbstractTile.DEFAULT_MAX_LOAD_RETRIES_;
  this.renderer = function() {
  };
  this.status_ = ee.layers.AbstractTile.Status.NEW;
  this.retryAttemptCount_ = 0;
  this.isRetrying_ = !1;
};
$jscomp.inherits(ee.layers.AbstractTile, goog.events.EventTarget);
ee.layers.AbstractTile.prototype.getDiv = function() {
  return this.div;
};
ee.layers.AbstractTile.prototype.startLoad = function() {
  var $jscomp$this$800656669$27 = this;
  if (!this.isRetrying_ && this.getStatus() == ee.layers.AbstractTile.Status.LOADING) {
    throw Error("startLoad() can only be invoked once. Use retryLoad() after the first attempt.");
  }
  this.setStatus(ee.layers.AbstractTile.Status.LOADING);
  this.loadingStartTs_ = (new Date()).getTime();
  this.xhrIo_ = new goog.net.XhrIo();
  this.xhrIo_.setResponseType(goog.net.XhrIo.ResponseType.BLOB);
  this.xhrIo_.listen(goog.net.EventType.COMPLETE, function(event) {
    var blob = $jscomp$this$800656669$27.xhrIo_.getResponse(), status = $jscomp$this$800656669$27.xhrIo_.getStatus(), HttpStatus = goog.net.HttpStatus;
    status == HttpStatus.TOO_MANY_REQUESTS && $jscomp$this$800656669$27.setStatus(ee.layers.AbstractTile.Status.THROTTLED);
    if (HttpStatus.isSuccess(status)) {
      var sourceResponseHeaders = {};
      module$contents$goog$object_forEach($jscomp$this$800656669$27.xhrIo_.getResponseHeaders(), function(value, name) {
        sourceResponseHeaders[name.toLowerCase()] = value;
      });
      $jscomp$this$800656669$27.sourceResponseHeaders = sourceResponseHeaders;
      $jscomp$this$800656669$27.sourceData = blob;
      $jscomp$this$800656669$27.finishLoad();
    } else if (blob) {
      var reader = new goog.fs.FileReader();
      reader.listen(goog.fs.FileReader.EventType.LOAD_END, function() {
        $jscomp$this$800656669$27.retryLoad(reader.getResult());
      }, void 0);
      reader.readAsText(blob);
    } else {
      $jscomp$this$800656669$27.retryLoad("Failed to load tile.");
    }
  }, !1);
  this.xhrIo_.listenOnce(goog.net.EventType.READY, goog.partial(module$contents$goog$dispose_dispose, this.xhrIo_));
  this.sourceUrl && this.sourceUrl.endsWith("&profiling=1") && (this.sourceUrl = this.sourceUrl.replace("&profiling=1", ""), this.xhrIo_.headers.set(module$contents$ee$apiclient_apiclient.PROFILE_REQUEST_HEADER, "1"));
  this.xhrIo_.send(this.sourceUrl, "GET");
};
ee.layers.AbstractTile.prototype.finishLoad = function() {
  this.renderer(this);
  this.setStatus(ee.layers.AbstractTile.Status.LOADED);
};
ee.layers.AbstractTile.prototype.cancelLoad = function() {
  module$contents$goog$dispose_dispose(this.xhrIo_);
};
ee.layers.AbstractTile.prototype.retryLoad = function(opt_errorMessage) {
  var parseError = function(error) {
    try {
      if (error = JSON.parse(error), error.error && error.error.message) {
        return error.error.message;
      }
    } catch (e) {
    }
    return error;
  };
  this.retryAttemptCount_ >= this.maxRetries ? (this.errorMessage_ = parseError(opt_errorMessage), this.setStatus(ee.layers.AbstractTile.Status.FAILED)) : (this.cancelLoad(), setTimeout(goog.bind(function() {
    this.isDisposed() || (this.isRetrying_ = !0, this.startLoad(), this.isRetrying_ = !1);
  }, this), 1E3 * Math.pow(2, this.retryAttemptCount_++)));
};
ee.layers.AbstractTile.prototype.abort = function() {
  this.cancelLoad();
  this.getStatus() != ee.layers.AbstractTile.Status.ABORTED && this.getStatus() != ee.layers.AbstractTile.Status.REMOVED && this.setStatus(this.isDone() ? ee.layers.AbstractTile.Status.REMOVED : ee.layers.AbstractTile.Status.ABORTED);
};
ee.layers.AbstractTile.prototype.isDone = function() {
  return this.status_ in ee.layers.AbstractTile.DONE_STATUS_SET_;
};
ee.layers.AbstractTile.prototype.getStatus = function() {
  return this.status_;
};
ee.layers.AbstractTile.prototype.setStatus = function(status) {
  this.status_ = status;
  this.dispatchEvent(ee.layers.AbstractTile.EventType.STATUS_CHANGED);
};
ee.layers.AbstractTile.prototype.disposeInternal = function() {
  goog.events.EventTarget.prototype.disposeInternal.call(this);
  this.cancelLoad();
  this.div.remove();
  this.renderer = null;
};
ee.layers.AbstractTile.EventType = {STATUS_CHANGED:"status-changed"};
ee.layers.AbstractTile.Status = {NEW:"new", LOADING:"loading", THROTTLED:"throttled", LOADED:"loaded", FAILED:"failed", ABORTED:"aborted", REMOVED:"removed"};
ee.layers.AbstractTile.DONE_STATUS_SET_ = module$contents$goog$object_createSet(ee.layers.AbstractTile.Status.ABORTED, ee.layers.AbstractTile.Status.FAILED, ee.layers.AbstractTile.Status.LOADED, ee.layers.AbstractTile.Status.REMOVED);
ee.layers.AbstractTile.DEFAULT_MAX_LOAD_RETRIES_ = 5;
var module$exports$ee$layers$AbstractTileSource = function() {
  goog.Disposable.call(this);
};
$jscomp.inherits(module$exports$ee$layers$AbstractTileSource, goog.Disposable);
ee.layers.BinaryOverlay = function(tileSource, opt_options) {
  ee.layers.AbstractOverlay.call(this, tileSource, opt_options);
  this.buffersByCoord_ = new goog.structs.Map();
  this.divsByCoord_ = new goog.structs.Map();
};
$jscomp.inherits(ee.layers.BinaryOverlay, ee.layers.AbstractOverlay);
ee.layers.BinaryOverlay.prototype.createTile = function(coord, zoom, ownerDocument, uniqueId) {
  var tile = new ee.layers.BinaryTile(coord, zoom, ownerDocument, uniqueId);
  this.handler.listen(tile, ee.layers.AbstractTile.EventType.STATUS_CHANGED, function() {
    tile.getStatus() == ee.layers.AbstractTile.Status.LOADED && (this.buffersByCoord_.set(coord, new Float32Array(tile.buffer_)), this.divsByCoord_.set(coord, tile.div));
  });
  return tile;
};
ee.layers.BinaryOverlay.prototype.getBuffersByCoord = function() {
  return this.buffersByCoord_;
};
ee.layers.BinaryOverlay.prototype.getDivsByCoord = function() {
  return this.divsByCoord_;
};
ee.layers.BinaryOverlay.prototype.disposeInternal = function() {
  ee.layers.AbstractOverlay.prototype.disposeInternal.call(this);
  this.divsByCoord_ = this.buffersByCoord_ = null;
};
goog.exportSymbol("ee.layers.BinaryOverlay", ee.layers.BinaryOverlay);
ee.layers.BinaryTile = function(coord, zoom, ownerDocument, uniqueId) {
  ee.layers.AbstractTile.call(this, coord, zoom, ownerDocument, uniqueId);
};
$jscomp.inherits(ee.layers.BinaryTile, ee.layers.AbstractTile);
ee.layers.BinaryTile.prototype.finishLoad = function() {
  var reader = new goog.fs.FileReader();
  reader.listen(goog.fs.FileReader.EventType.LOAD_END, function() {
    this.buffer_ = reader.getResult();
    ee.layers.AbstractTile.prototype.finishLoad.call(this);
  }, void 0, this);
  reader.readAsArrayBuffer(this.sourceData);
};
goog.net.ImageLoader = function(opt_parent) {
  goog.events.EventTarget.call(this);
  this.imageIdToRequestMap_ = {};
  this.imageIdToImageMap_ = {};
  this.handler_ = new goog.events.EventHandler(this);
  this.parent_ = opt_parent;
  this.completionFired_ = !1;
};
goog.inherits(goog.net.ImageLoader, goog.events.EventTarget);
goog.net.ImageLoader.CorsRequestType = {ANONYMOUS:"anonymous", USE_CREDENTIALS:"use-credentials"};
goog.net.ImageLoader.IMAGE_LOAD_EVENTS_ = [goog.events.EventType.LOAD, goog.net.EventType.ABORT, goog.net.EventType.ERROR];
goog.net.ImageLoader.prototype.addImage = function(id, image, opt_corsRequestType) {
  var src = "string" === typeof image ? image : image.src;
  src && (this.completionFired_ = !1, this.imageIdToRequestMap_[id] = {src:src, corsRequestType:void 0 !== opt_corsRequestType ? opt_corsRequestType : null});
};
goog.net.ImageLoader.prototype.removeImage = function(id) {
  delete this.imageIdToRequestMap_[id];
  var image = this.imageIdToImageMap_[id];
  image && (delete this.imageIdToImageMap_[id], this.handler_.unlisten(image, goog.net.ImageLoader.IMAGE_LOAD_EVENTS_, this.onNetworkEvent_));
};
goog.net.ImageLoader.prototype.start = function() {
  var imageIdToRequestMap = this.imageIdToRequestMap_;
  module$contents$goog$object_getKeys(imageIdToRequestMap).forEach(function(id) {
    var imageRequest = imageIdToRequestMap[id];
    imageRequest && (delete imageIdToRequestMap[id], this.loadImage_(imageRequest, id));
  }, this);
};
goog.net.ImageLoader.prototype.loadImage_ = function(imageRequest, id) {
  if (!this.isDisposed()) {
    var image = this.parent_ ? goog.dom.getDomHelper(this.parent_).createDom(goog.dom.TagName.IMG) : new Image();
    imageRequest.corsRequestType && (image.crossOrigin = imageRequest.corsRequestType);
    this.handler_.listen(image, goog.net.ImageLoader.IMAGE_LOAD_EVENTS_, this.onNetworkEvent_);
    this.imageIdToImageMap_[id] = image;
    image.id = id;
    image.src = imageRequest.src;
  }
};
goog.net.ImageLoader.prototype.onNetworkEvent_ = function(evt) {
  var image = evt.currentTarget;
  if (image) {
    if (evt.type == goog.net.EventType.READY_STATE_CHANGE) {
      if (image.readyState == goog.net.EventType.COMPLETE) {
        evt.type = goog.events.EventType.LOAD;
      } else {
        return;
      }
    }
    "undefined" == typeof image.naturalWidth && (evt.type == goog.events.EventType.LOAD ? (image.naturalWidth = image.width, image.naturalHeight = image.height) : (image.naturalWidth = 0, image.naturalHeight = 0));
    this.removeImage(image.id);
    this.dispatchEvent({type:evt.type, target:image});
    this.isDisposed() || this.maybeFireCompletionEvent_();
  }
};
goog.net.ImageLoader.prototype.maybeFireCompletionEvent_ = function() {
  module$contents$goog$object_isEmpty(this.imageIdToImageMap_) && module$contents$goog$object_isEmpty(this.imageIdToRequestMap_) && !this.completionFired_ && (this.completionFired_ = !0, this.dispatchEvent(goog.net.EventType.COMPLETE));
};
goog.net.ImageLoader.prototype.disposeInternal = function() {
  delete this.imageIdToRequestMap_;
  delete this.imageIdToImageMap_;
  module$contents$goog$dispose_dispose(this.handler_);
  goog.net.ImageLoader.superClass_.disposeInternal.call(this);
};
ee.layers.ImageOverlay = function(tileSource, opt_options) {
  ee.layers.AbstractOverlay.call(this, tileSource, opt_options);
};
$jscomp.inherits(ee.layers.ImageOverlay, ee.layers.AbstractOverlay);
ee.layers.ImageOverlay.prototype.createTile = function(coord, zoom, ownerDocument, uniqueId) {
  return new ee.layers.ImageTile(coord, zoom, ownerDocument, uniqueId);
};
goog.exportSymbol("ee.layers.ImageOverlay", ee.layers.ImageOverlay);
ee.layers.ImageTile = function(coord, zoom, ownerDocument, uniqueId) {
  ee.layers.AbstractTile.call(this, coord, zoom, ownerDocument, uniqueId);
  this.renderer = ee.layers.ImageTile.defaultRenderer_;
  this.imageLoaderListenerKey_ = this.imageLoader_ = this.imageEl = null;
  this.objectUrl_ = "";
};
$jscomp.inherits(ee.layers.ImageTile, ee.layers.AbstractTile);
ee.layers.ImageTile.prototype.finishLoad = function() {
  try {
    var safeUrl = module$contents$safevalues$builders$url_builders_objectUrlFromSafeSource(this.sourceData);
    this.objectUrl_ = module$contents$safevalues$internals$url_impl_unwrapUrl(safeUrl);
    var imageUrl = this.objectUrl_ !== module$exports$safevalues$internals$url_impl.INNOCUOUS_URL.toString() ? this.objectUrl_ : this.sourceUrl;
  } catch (e) {
    imageUrl = this.sourceUrl;
  }
  this.imageLoader_ = new goog.net.ImageLoader();
  this.imageLoader_.addImage(this.div.id + "-image", imageUrl);
  this.imageLoaderListenerKey_ = goog.events.listenOnce(this.imageLoader_, ee.layers.ImageTile.IMAGE_LOADER_EVENTS_, function(event) {
    event.type == goog.events.EventType.LOAD ? (this.imageEl = event.target, ee.layers.AbstractTile.prototype.finishLoad.call(this)) : this.retryLoad();
  }, void 0, this);
  this.imageLoader_.start();
};
ee.layers.ImageTile.prototype.cancelLoad = function() {
  ee.layers.AbstractTile.prototype.cancelLoad.call(this);
  this.imageLoader_ && (goog.events.unlistenByKey(this.imageLoaderListenerKey_), module$contents$goog$dispose_dispose(this.imageLoader_));
};
ee.layers.ImageTile.prototype.disposeInternal = function() {
  ee.layers.AbstractTile.prototype.disposeInternal.call(this);
  this.objectUrl_ && URL.revokeObjectURL(this.objectUrl_);
};
ee.layers.ImageTile.defaultRenderer_ = function(tile) {
  tile.div.appendChild(tile.imageEl);
};
ee.layers.ImageTile.IMAGE_LOADER_EVENTS_ = [goog.events.EventType.LOAD, goog.net.EventType.ABORT, goog.net.EventType.ERROR];
goog.string.path = {};
goog.string.path.baseName = function(path) {
  var i = path.lastIndexOf("/") + 1;
  return path.slice(i);
};
goog.string.path.basename = goog.string.path.baseName;
goog.string.path.dirname = function(path) {
  var i = path.lastIndexOf("/") + 1, head = path.slice(0, i);
  /^\/+$/.test(head) || (head = head.replace(/\/+$/, ""));
  return head;
};
goog.string.path.extension = function(path) {
  var baseName = goog.string.path.baseName(path).replace(/\.+/g, "."), separatorIndex = baseName.lastIndexOf(".");
  return 0 >= separatorIndex ? "" : baseName.slice(separatorIndex + 1);
};
goog.string.path.join = function(var_args) {
  for (var path = arguments[0], i = 1; i < arguments.length; i++) {
    var arg = arguments[i];
    path = goog.string.startsWith(arg, "/") ? arg : "" == path || goog.string.endsWith(path, "/") ? path + arg : path + ("/" + arg);
  }
  return path;
};
goog.string.path.normalizePath = function(path) {
  if ("" == path) {
    return ".";
  }
  var initialSlashes = "";
  goog.string.startsWith(path, "/") && (initialSlashes = "/", goog.string.startsWith(path, "//") && !goog.string.startsWith(path, "///") && (initialSlashes = "//"));
  for (var parts = path.split("/"), newParts = [], i = 0; i < parts.length; i++) {
    var part = parts[i];
    "" != part && "." != part && (".." != part || !initialSlashes && !newParts.length || ".." == module$contents$goog$array_peek(newParts) ? newParts.push(part) : newParts.pop());
  }
  return initialSlashes + newParts.join("/") || ".";
};
goog.string.path.split = function(path) {
  var head = goog.string.path.dirname(path), tail = goog.string.path.baseName(path);
  return [head, tail];
};
var module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource = function(bucket, path, maxZoom, opt_suffix) {
  module$exports$ee$layers$AbstractTileSource.call(this);
  this.bucket_ = bucket;
  this.path_ = path;
  this.suffix_ = opt_suffix || "";
  this.maxZoom_ = maxZoom;
};
$jscomp.inherits(module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource, module$exports$ee$layers$AbstractTileSource);
module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.prototype.loadTile = function(tile, opt_priority) {
  if (tile.zoom <= this.maxZoom_) {
    tile.sourceUrl = this.getTileUrl_(tile.coord, tile.zoom);
  } else {
    var zoomSteps = tile.zoom - this.maxZoom_, zoomFactor = Math.pow(2, zoomSteps), upperCoord = new google.maps.Point(Math.floor(tile.coord.x / zoomFactor), Math.floor(tile.coord.y / zoomFactor));
    tile.sourceUrl = this.getTileUrl_(upperCoord, tile.zoom - zoomSteps);
    tile.renderer = goog.partial(module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.zoomTileRenderer_, this.maxZoom_);
  }
  var originalRetryLoad = goog.bind(tile.retryLoad, tile);
  tile.retryLoad = goog.bind(function(opt_errorMessage) {
    opt_errorMessage && (opt_errorMessage.includes(module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.MISSING_TILE_ERROR_) || opt_errorMessage.includes(module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.ACCESS_DENIED_ERROR_)) ? tile.setStatus(ee.layers.AbstractTile.Status.LOADED) : originalRetryLoad(opt_errorMessage);
  }, tile);
  tile.startLoad();
};
module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.prototype.getUniqueId = function() {
  return [this.bucket_, this.path_, this.maxZoom_, this.suffix_].join("-");
};
module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.prototype.getTileUrl_ = function(coord, zoom) {
  var url = goog.string.path.join(module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.BASE_URL, this.bucket_, this.path_, String(zoom), String(coord.x), String(coord.y));
  this.suffix_ && (url += this.suffix_);
  return url;
};
module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.zoomTileRenderer_ = function(maxZoom, tile) {
  if (!tile.imageEl) {
    throw Error("Tile must have an image element to be rendered.");
  }
  var zoomFactor = Math.pow(2, tile.zoom - maxZoom), sideLength = tile.tileSize.width, canv = tile.div.ownerDocument.createElement("canvas");
  canv.setAttribute("width", sideLength);
  canv.setAttribute("height", sideLength);
  tile.div.appendChild(canv);
  var context = canv.getContext("2d");
  context.imageSmoothingEnabled = !1;
  context.mozImageSmoothingEnabled = !1;
  context.webkitImageSmoothingEnabled = !1;
  context.drawImage(tile.imageEl, sideLength / zoomFactor * (tile.coord.x % zoomFactor), sideLength / zoomFactor * (tile.coord.y % zoomFactor), sideLength / zoomFactor, sideLength / zoomFactor, 0, 0, sideLength, sideLength);
};
goog.exportSymbol("ee.layers.CloudStorageTileSource", module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource);
module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.BASE_URL = "https://storage.googleapis.com";
module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.MISSING_TILE_ERROR_ = "The specified key does not exist.";
module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource.ACCESS_DENIED_ERROR_ = "AccessDenied";
ee.layers.CloudStorageTileSource = module$contents$ee$layers$CloudStorageTileSource_CloudStorageTileSource;
goog.structs.Queue = function() {
  this.front_ = [];
  this.back_ = [];
};
goog.structs.Queue.prototype.maybeFlip_ = function() {
  0 === this.front_.length && (this.front_ = this.back_, this.front_.reverse(), this.back_ = []);
};
goog.structs.Queue.prototype.enqueue = function(element) {
  this.back_.push(element);
};
goog.structs.Queue.prototype.dequeue = function() {
  this.maybeFlip_();
  return this.front_.pop();
};
goog.structs.Queue.prototype.peek = function() {
  this.maybeFlip_();
  return module$contents$goog$array_peek(this.front_);
};
goog.structs.Queue.prototype.getCount = function() {
  return this.front_.length + this.back_.length;
};
goog.structs.Queue.prototype.isEmpty = function() {
  return 0 === this.front_.length && 0 === this.back_.length;
};
goog.structs.Queue.prototype.clear = function() {
  this.front_ = [];
  this.back_ = [];
};
goog.structs.Queue.prototype.contains = function(obj) {
  return module$contents$goog$array_contains(this.front_, obj) || module$contents$goog$array_contains(this.back_, obj);
};
goog.structs.Queue.prototype.remove = function(obj) {
  return module$contents$goog$array_removeLast(this.front_, obj) || module$contents$goog$array_remove(this.back_, obj);
};
goog.structs.Queue.prototype.getValues = function() {
  for (var res = [], i = this.front_.length - 1; 0 <= i; --i) {
    res.push(this.front_[i]);
  }
  var len = this.back_.length;
  for (i = 0; i < len; ++i) {
    res.push(this.back_[i]);
  }
  return res;
};
goog.structs.Pool = function(opt_minCount, opt_maxCount) {
  goog.Disposable.call(this);
  this.minCount_ = opt_minCount || 0;
  this.maxCount_ = opt_maxCount || 10;
  if (this.minCount_ > this.maxCount_) {
    throw Error(goog.structs.Pool.ERROR_MIN_MAX_);
  }
  this.freeQueue_ = new goog.structs.Queue();
  this.inUseSet_ = new goog.structs.Set();
  this.delay = 0;
  this.lastAccess = null;
  this.adjustForMinMax();
};
goog.inherits(goog.structs.Pool, goog.Disposable);
goog.structs.Pool.ERROR_MIN_MAX_ = "[goog.structs.Pool] Min can not be greater than max";
goog.structs.Pool.ERROR_DISPOSE_UNRELEASED_OBJS_ = "[goog.structs.Pool] Objects not released";
goog.structs.Pool.prototype.setMinimumCount = function(min) {
  if (min > this.maxCount_) {
    throw Error(goog.structs.Pool.ERROR_MIN_MAX_);
  }
  this.minCount_ = min;
  this.adjustForMinMax();
};
goog.structs.Pool.prototype.setMaximumCount = function(max) {
  if (max < this.minCount_) {
    throw Error(goog.structs.Pool.ERROR_MIN_MAX_);
  }
  this.maxCount_ = max;
  this.adjustForMinMax();
};
goog.structs.Pool.prototype.setDelay = function(delay) {
  this.delay = delay;
};
goog.structs.Pool.prototype.getObject = function() {
  var time = Date.now();
  if (!(null != this.lastAccess && time - this.lastAccess < this.delay)) {
    var obj = this.removeFreeObject_();
    obj && (this.lastAccess = time, this.inUseSet_.add(obj));
    return obj;
  }
};
goog.structs.Pool.prototype.releaseObject = function(obj) {
  return this.inUseSet_.remove(obj) ? (this.addFreeObject(obj), !0) : !1;
};
goog.structs.Pool.prototype.removeFreeObject_ = function() {
  for (var obj; 0 < this.getFreeCount() && (obj = this.freeQueue_.dequeue(), !this.objectCanBeReused(obj));) {
    this.adjustForMinMax();
  }
  !obj && this.getCount() < this.maxCount_ && (obj = this.createObject());
  return obj;
};
goog.structs.Pool.prototype.addFreeObject = function(obj) {
  this.inUseSet_.remove(obj);
  this.objectCanBeReused(obj) && this.getCount() < this.maxCount_ ? this.freeQueue_.enqueue(obj) : this.disposeObject(obj);
};
goog.structs.Pool.prototype.adjustForMinMax = function() {
  for (var freeQueue = this.freeQueue_; this.getCount() < this.minCount_;) {
    freeQueue.enqueue(this.createObject());
  }
  for (; this.getCount() > this.maxCount_ && 0 < this.getFreeCount();) {
    this.disposeObject(freeQueue.dequeue());
  }
};
goog.structs.Pool.prototype.createObject = function() {
  return {};
};
goog.structs.Pool.prototype.disposeObject = function(obj) {
  if ("function" == typeof obj.dispose) {
    obj.dispose();
  } else {
    for (var i in obj) {
      obj[i] = null;
    }
  }
};
goog.structs.Pool.prototype.objectCanBeReused = function(obj) {
  return "function" == typeof obj.canBeReused ? obj.canBeReused() : !0;
};
goog.structs.Pool.prototype.contains = function(obj) {
  return this.freeQueue_.contains(obj) || this.inUseSet_.contains(obj);
};
goog.structs.Pool.prototype.getCount = function() {
  return this.freeQueue_.getCount() + this.inUseSet_.getCount();
};
goog.structs.Pool.prototype.getInUseCount = function() {
  return this.inUseSet_.getCount();
};
goog.structs.Pool.prototype.getFreeCount = function() {
  return this.freeQueue_.getCount();
};
goog.structs.Pool.prototype.isEmpty = function() {
  return this.freeQueue_.isEmpty() && this.inUseSet_.isEmpty();
};
goog.structs.Pool.prototype.disposeInternal = function() {
  goog.structs.Pool.superClass_.disposeInternal.call(this);
  if (0 < this.getInUseCount()) {
    throw Error(goog.structs.Pool.ERROR_DISPOSE_UNRELEASED_OBJS_);
  }
  delete this.inUseSet_;
  for (var freeQueue = this.freeQueue_; !freeQueue.isEmpty();) {
    this.disposeObject(freeQueue.dequeue());
  }
  delete this.freeQueue_;
};
goog.structs.Node = function(key, value) {
  this.key_ = key;
  this.value_ = value;
};
goog.structs.Node.prototype.getKey = function() {
  return this.key_;
};
goog.structs.Node.prototype.getValue = function() {
  return this.value_;
};
goog.structs.Node.prototype.clone = function() {
  return new goog.structs.Node(this.key_, this.value_);
};
var module$contents$goog$structs$Heap_Heap = function(opt_heap) {
  this.nodes_ = [];
  opt_heap && this.insertAll(opt_heap);
};
module$contents$goog$structs$Heap_Heap.prototype.insert = function(key, value) {
  var node = new goog.structs.Node(key, value), nodes = this.nodes_;
  nodes.push(node);
  this.moveUp_(nodes.length - 1);
};
module$contents$goog$structs$Heap_Heap.prototype.insertAll = function(heap) {
  if (heap instanceof module$contents$goog$structs$Heap_Heap) {
    var keys = heap.getKeys();
    var values = heap.getValues();
    if (0 >= this.getCount()) {
      for (var nodes = this.nodes_, i = 0; i < keys.length; i++) {
        nodes.push(new goog.structs.Node(keys[i], values[i]));
      }
      return;
    }
  } else {
    keys = module$contents$goog$object_getKeys(heap), values = module$contents$goog$object_getValues(heap);
  }
  for (var i$jscomp$0 = 0; i$jscomp$0 < keys.length; i$jscomp$0++) {
    this.insert(keys[i$jscomp$0], values[i$jscomp$0]);
  }
};
module$contents$goog$structs$Heap_Heap.prototype.remove = function() {
  var nodes = this.nodes_, count = nodes.length, rootNode = nodes[0];
  if (!(0 >= count)) {
    return 1 == count ? nodes.length = 0 : (nodes[0] = nodes.pop(), this.moveDown_(0)), rootNode.getValue();
  }
};
module$contents$goog$structs$Heap_Heap.prototype.peek = function() {
  var nodes = this.nodes_;
  if (0 != nodes.length) {
    return nodes[0].getValue();
  }
};
module$contents$goog$structs$Heap_Heap.prototype.peekKey = function() {
  return this.nodes_[0] && this.nodes_[0].getKey();
};
module$contents$goog$structs$Heap_Heap.prototype.moveDown_ = function(index) {
  for (var nodes = this.nodes_, count = nodes.length, node = nodes[index]; index < count >> 1;) {
    var leftChildIndex = this.getLeftChildIndex_(index), rightChildIndex = this.getRightChildIndex_(index), smallerChildIndex = rightChildIndex < count && nodes[rightChildIndex].getKey() < nodes[leftChildIndex].getKey() ? rightChildIndex : leftChildIndex;
    if (nodes[smallerChildIndex].getKey() > node.getKey()) {
      break;
    }
    nodes[index] = nodes[smallerChildIndex];
    index = smallerChildIndex;
  }
  nodes[index] = node;
};
module$contents$goog$structs$Heap_Heap.prototype.moveUp_ = function(index) {
  for (var nodes = this.nodes_, node = nodes[index]; 0 < index;) {
    var parentIndex = this.getParentIndex_(index);
    if (nodes[parentIndex].getKey() > node.getKey()) {
      nodes[index] = nodes[parentIndex], index = parentIndex;
    } else {
      break;
    }
  }
  nodes[index] = node;
};
module$contents$goog$structs$Heap_Heap.prototype.getLeftChildIndex_ = function(index) {
  return 2 * index + 1;
};
module$contents$goog$structs$Heap_Heap.prototype.getRightChildIndex_ = function(index) {
  return 2 * index + 2;
};
module$contents$goog$structs$Heap_Heap.prototype.getParentIndex_ = function(index) {
  return index - 1 >> 1;
};
module$contents$goog$structs$Heap_Heap.prototype.getValues = function() {
  for (var nodes = this.nodes_, rv = [], l = nodes.length, i = 0; i < l; i++) {
    rv.push(nodes[i].getValue());
  }
  return rv;
};
module$contents$goog$structs$Heap_Heap.prototype.getKeys = function() {
  for (var nodes = this.nodes_, rv = [], l = nodes.length, i = 0; i < l; i++) {
    rv.push(nodes[i].getKey());
  }
  return rv;
};
module$contents$goog$structs$Heap_Heap.prototype.containsValue = function(val) {
  return this.nodes_.some(function(node) {
    return node.getValue() == val;
  });
};
module$contents$goog$structs$Heap_Heap.prototype.containsKey = function(key) {
  return this.nodes_.some(function(node) {
    return node.getKey() == key;
  });
};
module$contents$goog$structs$Heap_Heap.prototype.clone = function() {
  return new module$contents$goog$structs$Heap_Heap(this);
};
module$contents$goog$structs$Heap_Heap.prototype.getCount = function() {
  return this.nodes_.length;
};
module$contents$goog$structs$Heap_Heap.prototype.isEmpty = function() {
  return 0 === this.nodes_.length;
};
module$contents$goog$structs$Heap_Heap.prototype.clear = function() {
  this.nodes_.length = 0;
};
goog.structs.Heap = module$contents$goog$structs$Heap_Heap;
var module$contents$goog$structs$PriorityQueue_PriorityQueue = function() {
  module$contents$goog$structs$Heap_Heap.apply(this, arguments);
};
$jscomp.inherits(module$contents$goog$structs$PriorityQueue_PriorityQueue, module$contents$goog$structs$Heap_Heap);
module$contents$goog$structs$PriorityQueue_PriorityQueue.prototype.enqueue = function(priority, value) {
  this.insert(priority, value);
};
module$contents$goog$structs$PriorityQueue_PriorityQueue.prototype.dequeue = function() {
  return this.remove();
};
goog.structs.PriorityQueue = module$contents$goog$structs$PriorityQueue_PriorityQueue;
goog.structs.PriorityPool = function(opt_minCount, opt_maxCount) {
  this.delayTimeout_ = void 0;
  this.requestQueue_ = new module$contents$goog$structs$PriorityQueue_PriorityQueue();
  goog.structs.Pool.call(this, opt_minCount, opt_maxCount);
};
goog.inherits(goog.structs.PriorityPool, goog.structs.Pool);
goog.structs.PriorityPool.DEFAULT_PRIORITY_ = 100;
goog.structs.PriorityPool.prototype.setDelay = function(delay) {
  goog.structs.PriorityPool.superClass_.setDelay.call(this, delay);
  null != this.lastAccess && (goog.global.clearTimeout(this.delayTimeout_), this.delayTimeout_ = goog.global.setTimeout(goog.bind(this.handleQueueRequests_, this), this.delay + this.lastAccess - Date.now()), this.handleQueueRequests_());
};
goog.structs.PriorityPool.prototype.getObject = function(opt_callback, opt_priority) {
  if (!opt_callback) {
    var result = goog.structs.PriorityPool.superClass_.getObject.call(this);
    result && this.delay && (this.delayTimeout_ = goog.global.setTimeout(goog.bind(this.handleQueueRequests_, this), this.delay));
    return result;
  }
  this.requestQueue_.enqueue(void 0 !== opt_priority ? opt_priority : goog.structs.PriorityPool.DEFAULT_PRIORITY_, opt_callback);
  this.handleQueueRequests_();
};
goog.structs.PriorityPool.prototype.handleQueueRequests_ = function() {
  for (var requestQueue = this.requestQueue_; 0 < requestQueue.getCount();) {
    var obj = this.getObject();
    if (obj) {
      requestQueue.dequeue().apply(this, [obj]);
    } else {
      break;
    }
  }
};
goog.structs.PriorityPool.prototype.addFreeObject = function(obj) {
  goog.structs.PriorityPool.superClass_.addFreeObject.call(this, obj);
  this.handleQueueRequests_();
};
goog.structs.PriorityPool.prototype.adjustForMinMax = function() {
  goog.structs.PriorityPool.superClass_.adjustForMinMax.call(this);
  this.handleQueueRequests_();
};
goog.structs.PriorityPool.prototype.disposeInternal = function() {
  goog.structs.PriorityPool.superClass_.disposeInternal.call(this);
  goog.global.clearTimeout(this.delayTimeout_);
  this.requestQueue_.clear();
  this.requestQueue_ = null;
};
var module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource = function(mapId, opt_profiler, opt_parallelism) {
  module$exports$ee$layers$AbstractTileSource.call(this);
  this.mapId_ = mapId;
  this.profiler_ = opt_profiler || null;
  this.token_count_ = opt_parallelism || module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.DEFAULT_TOKEN_COUNT_;
};
$jscomp.inherits(module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource, module$exports$ee$layers$AbstractTileSource);
module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.prototype.loadTile = function(tile, opt_priority) {
  var $jscomp$this$1089103446$2 = this, ProfilerHeader = module$contents$ee$apiclient_apiclient.PROFILE_HEADER.toLowerCase(), key = goog.events.listen(tile, ee.layers.AbstractTile.EventType.STATUS_CHANGED, function() {
    switch(tile.getStatus()) {
      case ee.layers.AbstractTile.Status.LOADED:
        var profileId = tile.sourceResponseHeaders[ProfilerHeader];
        this.profiler_ && profileId && this.profiler_.addTile(tile.div.id, profileId);
        break;
      case ee.layers.AbstractTile.Status.FAILED:
      case ee.layers.AbstractTile.Status.ABORTED:
        this.profiler_ && "" !== tile.div.id && this.profiler_.removeTile(tile.div.id), goog.events.unlistenByKey(key);
    }
  }, void 0, this);
  tile.sourceUrl = this.getTileUrl_(tile.coord, tile.zoom);
  this.getGlobalTokenPool_().getObject(function(token) {
    $jscomp$this$1089103446$2.handleAvailableToken_(tile, token);
  }, opt_priority);
};
module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.prototype.getUniqueId = function() {
  return this.mapId_.mapid + "-" + this.mapId_.token;
};
module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.prototype.handleAvailableToken_ = function(tile, token) {
  var tokenPool = this.getGlobalTokenPool_();
  if (tile.isDisposed() || tile.getStatus() == ee.layers.AbstractTile.Status.ABORTED) {
    tokenPool.releaseObject(token);
  } else {
    var key = goog.events.listen(tile, ee.layers.AbstractTile.EventType.STATUS_CHANGED, function() {
      tile.isDone() && (goog.events.unlistenByKey(key), tokenPool.releaseObject(token));
    });
    tile.startLoad();
  }
};
module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.prototype.getTileUrl_ = function(coord, zoom) {
  var url = ee.data.getTileUrl(this.mapId_, coord.x, coord.y, zoom);
  return this.profiler_ && this.profiler_.isEnabled() ? url + "&profiling=1" : url;
};
module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.prototype.getGlobalTokenPool_ = function() {
  module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.TOKEN_POOL_ || (module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.TOKEN_POOL_ = new goog.structs.PriorityPool(0, this.token_count_));
  return module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.TOKEN_POOL_;
};
goog.exportSymbol("ee.layers.EarthEngineTileSource", module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource);
module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.TOKEN_POOL_ = null;
module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource.DEFAULT_TOKEN_COUNT_ = 4;
ee.layers.EarthEngineTileSource = module$contents$ee$layers$EarthEngineTileSource_EarthEngineTileSource;
ee.layers.FeatureViewTileSource = {};
var module$contents$ee$layers$FeatureViewTileSource_FeatureViewTileSource = function(tilesKey) {
  module$exports$ee$layers$AbstractTileSource.call(this);
  this.tilesKey_ = tilesKey;
};
$jscomp.inherits(module$contents$ee$layers$FeatureViewTileSource_FeatureViewTileSource, module$exports$ee$layers$AbstractTileSource);
module$contents$ee$layers$FeatureViewTileSource_FeatureViewTileSource.prototype.loadTile = function(tile, opt_priority) {
  tile.sourceUrl = this.tilesKey_.formatTileUrl(tile.coord.x, tile.coord.y, tile.zoom);
  tile.startLoad();
};
module$contents$ee$layers$FeatureViewTileSource_FeatureViewTileSource.prototype.getUniqueId = function() {
  return this.tilesKey_.token;
};
goog.exportSymbol("ee.layers.FeatureViewTileSource", module$contents$ee$layers$FeatureViewTileSource_FeatureViewTileSource);
ee.layers.FeatureViewTileSource.FeatureViewTileSource = module$contents$ee$layers$FeatureViewTileSource_FeatureViewTileSource;
ee.MapTileManager = function() {
  goog.events.EventTarget.call(this);
  this.tokenPool_ = new ee.MapTileManager.TokenPool_(0, 60);
  this.requests_ = new goog.structs.Map();
};
$jscomp.inherits(ee.MapTileManager, goog.events.EventTarget);
ee.MapTileManager.prototype.getOutstandingCount = function() {
  return this.requests_.getCount();
};
ee.MapTileManager.prototype.send = function(id, url, opt_priority, opt_imageCompletedCallback, opt_maxRetries) {
  if (this.requests_.get(id)) {
    throw Error(ee.MapTileManager.ERROR_ID_IN_USE_);
  }
  var request = new ee.MapTileManager.Request_(id, url, opt_imageCompletedCallback, goog.bind(this.releaseRequest_, this), void 0 !== opt_maxRetries ? opt_maxRetries : ee.MapTileManager.MAX_RETRIES);
  this.requests_.set(id, request);
  var callback = goog.bind(this.handleAvailableToken_, this, request);
  this.tokenPool_.getObject(callback, opt_priority);
  return request;
};
ee.MapTileManager.prototype.abort = function(id) {
  var request = this.requests_.get(id);
  request && (request.setAborted(!0), this.releaseRequest_(request));
};
ee.MapTileManager.prototype.handleAvailableToken_ = function(request, token) {
  if (request.getImageLoader() || request.getAborted()) {
    this.releaseObject_(token);
  } else {
    if (request.setToken(token), token.setActive(!0), request.setImageLoader(new goog.net.ImageLoader()), !request.retry()) {
      throw Error("Cannot dispatch first request!");
    }
  }
};
ee.MapTileManager.prototype.releaseRequest_ = function(request) {
  this.requests_.remove(request.getId());
  request.getImageLoader() && (this.releaseObject_(request.getToken()), request.getImageLoader().dispose());
  request.fireImageEventCallback();
};
ee.MapTileManager.prototype.releaseObject_ = function(token) {
  token.setActive(!1);
  if (!this.tokenPool_.releaseObject(token)) {
    throw Error("Object not released");
  }
};
ee.MapTileManager.prototype.disposeInternal = function() {
  goog.events.EventTarget.prototype.disposeInternal.call(this);
  this.tokenPool_.dispose();
  this.tokenPool_ = null;
  var requests = this.requests_;
  module$contents$goog$array_forEach(requests.getValues(), function(value) {
    value.dispose();
  });
  requests.clear();
  this.requests_ = null;
};
ee.MapTileManager.getInstance = function() {
  return goog.singleton.getInstance(ee.MapTileManager);
};
goog.exportSymbol("ee.MapTileManager", ee.MapTileManager);
ee.MapTileManager.MAX_RETRIES = 1;
ee.MapTileManager.ERROR_ID_IN_USE_ = "[ee.MapTileManager] ID in use";
ee.MapTileManager.Request_ = function(id, url, opt_imageEventCallback, opt_requestCompleteCallback, opt_maxRetries) {
  goog.Disposable.call(this);
  this.id_ = id;
  this.url_ = url;
  this.maxRetries_ = void 0 !== opt_maxRetries ? opt_maxRetries : ee.MapTileManager.MAX_RETRIES;
  this.imageEventCallback_ = opt_imageEventCallback;
  this.requestCompleteCallback_ = opt_requestCompleteCallback;
};
$jscomp.inherits(ee.MapTileManager.Request_, goog.Disposable);
ee.MapTileManager.Request_.prototype.getImageLoader = function() {
  return this.imageLoader_;
};
ee.MapTileManager.Request_.prototype.setImageLoader = function(imageLoader) {
  this.imageLoader_ = imageLoader;
};
ee.MapTileManager.Request_.prototype.getToken = function() {
  return this.token_;
};
ee.MapTileManager.Request_.prototype.setToken = function(token) {
  this.token_ = token;
};
ee.MapTileManager.Request_.prototype.addImageEventListener = function() {
  goog.events.listenOnce(this.imageLoader_, ee.MapTileManager.Request_.IMAGE_LOADER_EVENT_TYPES_, goog.bind(this.handleImageEvent_, this));
};
ee.MapTileManager.Request_.prototype.fireImageEventCallback = function() {
  this.imageEventCallback_ && this.imageEventCallback_(this.event_, this.profileId_);
};
ee.MapTileManager.Request_.prototype.getId = function() {
  return this.id_;
};
ee.MapTileManager.Request_.prototype.getUrl = function() {
  return this.url_;
};
ee.MapTileManager.Request_.prototype.getMaxRetries = function() {
  return this.maxRetries_;
};
ee.MapTileManager.Request_.prototype.getAttemptCount = function() {
  return this.attemptCount_;
};
ee.MapTileManager.Request_.prototype.increaseAttemptCount = function() {
  this.attemptCount_++;
};
ee.MapTileManager.Request_.prototype.hasReachedMaxRetries = function() {
  return this.attemptCount_ > this.maxRetries_;
};
ee.MapTileManager.Request_.prototype.setAborted = function(aborted) {
  aborted && !this.aborted_ && (this.aborted_ = aborted, this.event_ = new goog.events.Event(goog.net.EventType.ABORT));
};
ee.MapTileManager.Request_.prototype.getAborted = function() {
  return this.aborted_;
};
ee.MapTileManager.Request_.prototype.handleImageEvent_ = function(e) {
  if (this.getAborted()) {
    this.markCompleted_();
  } else {
    switch(e.type) {
      case goog.events.EventType.LOAD:
        this.handleSuccess_(e);
        this.markCompleted_();
        break;
      case goog.net.EventType.ERROR:
      case goog.net.EventType.ABORT:
        this.handleError_(e);
    }
  }
};
ee.MapTileManager.Request_.prototype.markCompleted_ = function() {
  this.requestCompleteCallback_ && this.requestCompleteCallback_(this);
};
ee.MapTileManager.Request_.prototype.handleSuccess_ = function(e) {
  this.event_ = e;
};
ee.MapTileManager.Request_.prototype.handleError_ = function(e) {
  this.retry() || (this.event_ = e, this.markCompleted_());
};
ee.MapTileManager.Request_.prototype.disposeInternal = function() {
  goog.Disposable.prototype.disposeInternal.call(this);
  delete this.imageEventCallback_;
  delete this.requestCompleteCallback_;
};
ee.MapTileManager.Request_.prototype.retry = function() {
  if (this.hasReachedMaxRetries()) {
    return !1;
  }
  this.increaseAttemptCount();
  this.imageLoader_.removeImage(this.id_);
  setTimeout(goog.bind(this.start_, this), 0);
  return !0;
};
ee.MapTileManager.Request_.prototype.start_ = function() {
  if (!this.getAborted()) {
    var actuallyLoadImage = goog.bind(function(imageUrl) {
      this.getAborted() || (this.imageLoader_.addImage(this.id_, imageUrl), this.addImageEventListener(), this.imageLoader_.start());
    }, this), sourceUrl = this.getUrl();
    if (goog.Uri.parse(sourceUrl).getQueryData().containsKey("profiling")) {
      var xhrIo = new goog.net.XhrIo();
      xhrIo.setResponseType(goog.net.XhrIo.ResponseType.BLOB);
      xhrIo.listen(goog.net.EventType.COMPLETE, goog.bind(function(event) {
        this.profileId_ = xhrIo.getResponseHeader(module$contents$ee$apiclient_apiclient.PROFILE_HEADER) || null;
        if (200 <= xhrIo.getStatus() && 300 > xhrIo.getStatus()) {
          try {
            var objectUrl = module$contents$safevalues$internals$url_impl_unwrapUrl(module$contents$safevalues$builders$url_builders_objectUrlFromSafeSource(xhrIo.getResponse()));
            var ok = objectUrl !== module$exports$safevalues$internals$url_impl.INNOCUOUS_URL.toString();
          } catch (e) {
          }
        }
        actuallyLoadImage(ok ? objectUrl : sourceUrl);
      }, this));
      xhrIo.listenOnce(goog.net.EventType.READY, goog.bind(xhrIo.dispose, xhrIo));
      xhrIo.send(sourceUrl, "GET");
    } else {
      actuallyLoadImage(sourceUrl);
    }
  }
};
ee.MapTileManager.Request_.prototype.attemptCount_ = 0;
ee.MapTileManager.Request_.prototype.aborted_ = !1;
ee.MapTileManager.Request_.prototype.imageLoader_ = null;
ee.MapTileManager.Request_.prototype.token_ = null;
ee.MapTileManager.Request_.prototype.event_ = null;
ee.MapTileManager.Request_.prototype.profileId_ = null;
ee.MapTileManager.Request_.IMAGE_LOADER_EVENT_TYPES_ = [goog.events.EventType.LOAD, goog.net.EventType.ABORT, goog.net.EventType.ERROR];
ee.MapTileManager.Token_ = function() {
  goog.Disposable.call(this);
  this.active_ = !1;
};
$jscomp.inherits(ee.MapTileManager.Token_, goog.Disposable);
ee.MapTileManager.Token_.prototype.setActive = function(val) {
  this.active_ = val;
};
ee.MapTileManager.Token_.prototype.isActive = function() {
  return this.active_;
};
ee.MapTileManager.TokenPool_ = function(opt_minCount, opt_maxCount) {
  goog.structs.PriorityPool.call(this, opt_minCount, opt_maxCount);
};
$jscomp.inherits(ee.MapTileManager.TokenPool_, goog.structs.PriorityPool);
ee.MapTileManager.TokenPool_.prototype.createObject = function() {
  return new ee.MapTileManager.Token_();
};
ee.MapTileManager.TokenPool_.prototype.disposeObject = function(obj) {
  obj.dispose();
};
ee.MapTileManager.TokenPool_.prototype.objectCanBeReused = function(obj) {
  return !obj.isDisposed() && !obj.isActive();
};
ee.MapLayerOverlay = function(url, mapId, token, init, opt_profiler) {
  ee.AbstractOverlay.call(this, url, mapId, token, init, opt_profiler);
  this.minZoom = init.minZoom || 0;
  this.maxZoom = init.maxZoom || 20;
  if (!window.google || !window.google.maps) {
    throw Error("Google Maps API hasn't been initialized.");
  }
  this.tileSize = init.tileSize || new google.maps.Size(256, 256);
  this.isPng = void 0 !== init.isPng ? init.isPng : !0;
  this.name = init.name;
  this.tiles_ = new goog.structs.Set();
  this.opacity_ = 1;
  this.visible_ = !0;
  this.profiler_ = opt_profiler || null;
};
$jscomp.inherits(ee.MapLayerOverlay, ee.AbstractOverlay);
ee.MapLayerOverlay.prototype.addTileCallback = function(callback) {
  return goog.events.listen(this, ee.AbstractOverlay.EventType.TILE_LOADED, callback);
};
ee.MapLayerOverlay.prototype.removeTileCallback = function(callbackId) {
  goog.events.unlistenByKey(callbackId);
};
ee.MapLayerOverlay.prototype.dispatchTileEvent_ = function() {
  this.dispatchEvent(new ee.TileEvent(this.tilesLoading.length));
};
ee.MapLayerOverlay.prototype.getTile = function(coord, zoom, ownerDocument) {
  var maxCoord;
  if (zoom < this.minZoom || 0 > coord.y || coord.y >= 1 << zoom) {
    var img = ownerDocument.createElement("IMG");
    img.style.width = "0px";
    img.style.height = "0px";
    return img;
  }
  var profiling = this.profiler_ && this.profiler_.isEnabled(), tileId = this.getTileId(coord, zoom), src = [this.url, tileId].join("/") + "?token=" + this.token;
  profiling && (src += "&profiling=1");
  var uniqueTileId = [tileId, this.tileCounter, this.token].join("/");
  this.tileCounter += 1;
  var div = goog.dom.createDom(goog.dom.TagName.DIV, {id:uniqueTileId}), priority = (new Date()).getTime() / 1E3;
  this.tilesLoading.push(uniqueTileId);
  ee.MapTileManager.getInstance().send(uniqueTileId, src, priority, goog.bind(this.handleImageCompleted_, this, div, uniqueTileId));
  this.dispatchTileEvent_();
  return div;
};
ee.MapLayerOverlay.prototype.getLoadedTilesCount = function() {
  return this.tiles_.getCount();
};
ee.MapLayerOverlay.prototype.getLoadingTilesCount = function() {
  return this.tilesLoading.length;
};
ee.MapLayerOverlay.prototype.releaseTile = function(tileDiv) {
  ee.MapTileManager.getInstance().abort(tileDiv.id);
  this.tiles_.remove(goog.dom.getFirstElementChild(tileDiv));
  "" !== tileDiv.id && (this.tilesFailed.remove(tileDiv.id), this.profiler_ && this.profiler_.removeTile(tileDiv.id));
};
ee.MapLayerOverlay.prototype.setOpacity = function(opacity) {
  this.opacity_ = opacity;
  var iter = this.tiles_.__iterator__();
  goog.iter.forEach(iter, function(tile) {
    goog.style.setOpacity(tile, opacity);
  });
};
ee.MapLayerOverlay.prototype.handleImageCompleted_ = function(div, tileId, e, profileId) {
  if (e.type == goog.net.EventType.ERROR) {
    module$contents$goog$array_remove(this.tilesLoading, tileId), this.tilesFailed.add(tileId), this.dispatchEvent(e);
  } else {
    module$contents$goog$array_remove(this.tilesLoading, tileId);
    if (e.target && e.type == goog.events.EventType.LOAD) {
      var tile = e.target;
      this.tiles_.add(tile);
      1 != this.opacity_ && goog.style.setOpacity(tile, this.opacity_);
      div.appendChild(tile);
    }
    this.dispatchTileEvent_();
  }
  this.profiler_ && null !== profileId && this.profiler_.addTile(tileId, profileId);
};
goog.exportSymbol("ee.MapLayerOverlay", ee.MapLayerOverlay);
goog.exportProperty(ee.MapLayerOverlay.prototype, "removeTileCallback", ee.MapLayerOverlay.prototype.removeTileCallback);
goog.exportProperty(ee.MapLayerOverlay.prototype, "addTileCallback", ee.MapLayerOverlay.prototype.addTileCallback);
goog.exportProperty(ee.MapLayerOverlay.prototype, "getTile", ee.MapLayerOverlay.prototype.getTile);
goog.exportProperty(ee.MapLayerOverlay.prototype, "setOpacity", ee.MapLayerOverlay.prototype.setOpacity);
goog.exportProperty(ee.MapLayerOverlay.prototype, "releaseTile", ee.MapLayerOverlay.prototype.releaseTile);
goog.async.Delay = function(listener, opt_interval, opt_handler) {
  goog.Disposable.call(this);
  this.listener_ = listener;
  this.interval_ = opt_interval || 0;
  this.handler_ = opt_handler;
  this.callback_ = goog.bind(this.doAction_, this);
};
goog.inherits(goog.async.Delay, goog.Disposable);
goog.async.Delay.prototype.id_ = 0;
goog.async.Delay.prototype.disposeInternal = function() {
  goog.async.Delay.superClass_.disposeInternal.call(this);
  this.stop();
  delete this.listener_;
  delete this.handler_;
};
goog.async.Delay.prototype.start = function(opt_interval) {
  this.stop();
  this.id_ = goog.Timer.callOnce(this.callback_, void 0 !== opt_interval ? opt_interval : this.interval_);
};
goog.async.Delay.prototype.startIfNotActive = function(opt_interval) {
  this.isActive() || this.start(opt_interval);
};
goog.async.Delay.prototype.stop = function() {
  this.isActive() && goog.Timer.clear(this.id_);
  this.id_ = 0;
};
goog.async.Delay.prototype.fire = function() {
  this.stop();
  this.doAction_();
};
goog.async.Delay.prototype.fireIfActive = function() {
  this.isActive() && this.fire();
};
goog.async.Delay.prototype.isActive = function() {
  return 0 != this.id_;
};
goog.async.Delay.prototype.doAction_ = function() {
  this.id_ = 0;
  this.listener_ && this.listener_.call(this.handler_);
};
ee.data.Profiler = function(format) {
  goog.events.EventTarget.call(this);
  this.format_ = format;
  this.isEnabled_ = !1;
  this.lastRefreshToken_ = null;
  this.profileIds_ = Object.create(null);
  this.tileProfileIds_ = Object.create(null);
  this.showInternal_ = !1;
  this.profileError_ = null;
  this.throttledRefresh_ = new goog.async.Delay(goog.bind(this.refresh_, this), ee.data.Profiler.DELAY_BEFORE_REFRESH_);
  this.profileData_ = ee.data.Profiler.getEmptyProfile_(format);
  this.MAX_RETRY_COUNT_ = 5;
};
$jscomp.inherits(ee.data.Profiler, goog.events.EventTarget);
ee.data.Profiler.prototype.isEnabled = function() {
  return this.isEnabled_;
};
ee.data.Profiler.prototype.setEnabled = function(value) {
  this.isEnabled_ = !!value;
  this.dispatchEvent(new goog.events.Event(ee.data.Profiler.EventType.STATE_CHANGED));
};
ee.data.Profiler.prototype.isLoading = function() {
  return null !== this.lastRefreshToken_;
};
ee.data.Profiler.prototype.isError = function() {
  return null != this.profileError_;
};
ee.data.Profiler.prototype.getStatusText = function() {
  if (this.profileError_) {
    return this.profileError_;
  }
  if (this.lastRefreshToken_) {
    return "Loading...";
  }
  var profiles = 0, nonTileProfiles = 0, tileProfiles = 0;
  module$contents$goog$object_forEach(this.profileIds_, function(refCount) {
    profiles++;
    Infinity === refCount ? nonTileProfiles++ : tileProfiles++;
  }, this);
  return "Viewing " + profiles + " profiles, " + nonTileProfiles + " from API calls and " + tileProfiles + " from map tiles.";
};
ee.data.Profiler.prototype.getProfileData = function() {
  return this.profileData_;
};
ee.data.Profiler.prototype.clearAndDrop = function() {
  this.profileIds_ = Object.create(null);
  this.tileProfileIds_ = Object.create(null);
  this.refresh_();
};
ee.data.Profiler.prototype.getProfileHook = function() {
  var profileIds = this.profileIds_;
  return this.isEnabled_ ? goog.bind(function(profileId) {
    profileIds[profileId] = Infinity;
    this.throttledRefresh_.start();
  }, this) : null;
};
ee.data.Profiler.prototype.removeProfile_ = function(profileId) {
  var count = this.profileIds_[profileId];
  1 < count ? this.profileIds_[profileId]-- : void 0 !== count && (delete this.profileIds_[profileId], this.throttledRefresh_.start());
};
ee.data.Profiler.prototype.refresh_ = function(retryAttempt) {
  var $jscomp$this$722023317$13 = this;
  retryAttempt = void 0 === retryAttempt ? 0 : retryAttempt;
  var marker = {};
  this.lastRefreshToken_ = marker;
  var handleResponse = function(result, error) {
    marker == $jscomp$this$722023317$13.lastRefreshToken_ && (error && "number" === typeof retryAttempt && retryAttempt < $jscomp$this$722023317$13.MAX_RETRY_COUNT_ ? goog.Timer.callOnce(goog.bind($jscomp$this$722023317$13.refresh_, $jscomp$this$722023317$13, retryAttempt + 1), 2 * ee.data.Profiler.DELAY_BEFORE_REFRESH_) : ($jscomp$this$722023317$13.profileError_ = error || null, $jscomp$this$722023317$13.profileData_ = error ? ee.data.Profiler.getEmptyProfile_($jscomp$this$722023317$13.format_) : 
    result, $jscomp$this$722023317$13.lastRefreshToken_ = null, $jscomp$this$722023317$13.dispatchEvent(ee.data.Profiler.EventType.STATE_CHANGED), $jscomp$this$722023317$13.dispatchEvent(ee.data.Profiler.EventType.DATA_CHANGED)));
  }, ids = module$contents$goog$object_getKeys(this.profileIds_);
  0 === ids.length ? handleResponse(ee.data.Profiler.getEmptyProfile_(this.format_), void 0) : (ee.ApiFunction._apply(this.showInternal_ ? "Profile.getProfilesInternal" : "Profile.getProfiles", {ids:ids, format:this.format_.toString()}).getInfo(handleResponse), this.dispatchEvent(ee.data.Profiler.EventType.STATE_CHANGED));
};
ee.data.Profiler.prototype.addTile = function(tileId, profileId) {
  this.tileProfileIds_[tileId] || (this.tileProfileIds_[tileId] = profileId, this.profileIds_[profileId] = (this.profileIds_[profileId] || 0) + 1, this.throttledRefresh_.start());
};
ee.data.Profiler.prototype.removeTile = function(tileId) {
  var profileId = this.tileProfileIds_[tileId];
  profileId && (delete this.tileProfileIds_[tileId], this.removeProfile_(profileId));
};
ee.data.Profiler.prototype.getShowInternal = function() {
  return this.showInternal_;
};
ee.data.Profiler.prototype.setShowInternal = function(value) {
  this.showInternal_ = !!value;
  this.throttledRefresh_.fire();
};
ee.data.Profiler.prototype.setParentEventTarget = function(parent) {
  throw Error("not applicable");
};
ee.data.Profiler.getEmptyProfile_ = function(format) {
  switch(format) {
    case ee.data.Profiler.Format.TEXT:
      return "";
    case ee.data.Profiler.Format.JSON:
      return ee.data.Profiler.EMPTY_JSON_PROFILE_;
    default:
      throw Error("Invalid Profiler data format: " + format);
  }
};
ee.data.Profiler.DELAY_BEFORE_REFRESH_ = 500;
ee.data.Profiler.EMPTY_JSON_PROFILE_ = {cols:[], rows:[]};
ee.data.Profiler.EventType = {STATE_CHANGED:"statechanged", DATA_CHANGED:"datachanged"};
ee.data.Profiler.Format = function(format) {
  this.format_ = format;
};
ee.data.Profiler.Format.prototype.toString = function() {
  return this.format_;
};
ee.data.Profiler.Format.TEXT = new ee.data.Profiler.Format("text");
ee.data.Profiler.Format.JSON = new ee.data.Profiler.Format("json");
(function() {
  var exportedFnInfo = {}, orderedFnNames = "ee.ApiFunction._call ee.ApiFunction.lookup ee.ApiFunction._apply ee.batch.Export.table.toBigQuery ee.batch.Export.video.toCloudStorage ee.batch.Export.image.toCloudStorage ee.batch.Export.table.toFeatureView ee.batch.Export.video.toDrive ee.batch.Export.table.toDrive ee.batch.Export.table.toAsset ee.batch.Export.classifier.toAsset ee.batch.Export.image.toDrive ee.batch.Export.table.toCloudStorage ee.batch.Export.image.toAsset ee.batch.Export.map.toCloudStorage ee.batch.Export.videoMap.toCloudStorage ee.Collection.prototype.filterMetadata ee.Collection.prototype.sort ee.Collection.prototype.limit ee.Collection.prototype.filter ee.Collection.prototype.filterBounds ee.Collection.prototype.iterate ee.Collection.prototype.filterDate ee.Collection.prototype.map ee.ComputedObject.prototype.aside ee.ComputedObject.prototype.evaluate ee.ComputedObject.prototype.serialize ee.ComputedObject.prototype.getInfo ee.data.listImages ee.data.getDownloadId ee.data.getAssetAcl ee.data.makeDownloadUrl ee.data.authenticateViaPopup ee.data.getFeatureViewTilesKey ee.data.listFeatures ee.data.getAsset ee.data.getAssetRoots ee.data.setWorkloadTag ee.data.getOperation ee.data.createAssetHome ee.data.authenticateViaPrivateKey ee.data.setDefaultWorkloadTag ee.data.getInfo ee.data.newTaskId ee.data.createAsset ee.data.computeValue ee.data.resetWorkloadTag ee.data.cancelTask ee.data.getThumbId ee.data.getVideoThumbId ee.data.updateAsset ee.data.updateTask ee.data.getList ee.data.getFilmstripThumbId ee.data.getTaskStatus ee.data.startIngestion ee.data.startProcessing ee.data.createFolder ee.data.setAssetAcl ee.data.listAssets ee.data.makeThumbUrl ee.data.renameAsset ee.data.authenticateViaOauth ee.data.getMapId ee.data.setAssetProperties ee.data.getTaskList ee.data.copyAsset ee.data.getTableDownloadId ee.data.listBuckets ee.data.makeTableDownloadUrl ee.data.authenticate ee.data.getAssetRootQuota ee.data.getTileUrl ee.data.getTaskListWithLimit ee.data.startTableIngestion ee.data.deleteAsset ee.data.listOperations ee.data.cancelOperation ee.data.getWorkloadTag ee.Date ee.Deserializer.decode ee.Deserializer.decodeCloudApi ee.Deserializer.fromCloudApiJSON ee.Deserializer.fromJSON ee.Dictionary ee.call ee.initialize ee.reset ee.Algorithms ee.InitState ee.apply ee.TILE_SIZE ee.Element.prototype.set ee.Encodable.SourceFrame ee.Feature ee.Feature.prototype.getInfo ee.Feature.prototype.getMapId ee.Feature.prototype.getMap ee.FeatureCollection.prototype.getMapId ee.FeatureCollection.prototype.select ee.FeatureCollection ee.FeatureCollection.prototype.getDownloadURL ee.FeatureCollection.prototype.getMap ee.FeatureCollection.prototype.getInfo ee.Filter.bounds ee.Filter.and ee.Filter.metadata ee.Filter.prototype.not ee.Filter.neq ee.Filter.gt ee.Filter.inList ee.Filter.lt ee.Filter.or ee.Filter.lte ee.Filter.gte ee.Filter ee.Filter.eq ee.Filter.date ee.Function.prototype.apply ee.Function.prototype.call ee.Geometry.MultiPoint ee.Geometry.BBox ee.Geometry.prototype.toGeoJSONString ee.Geometry ee.Geometry.LineString ee.Geometry.MultiPolygon ee.Geometry.LinearRing ee.Geometry.Rectangle ee.Geometry.prototype.serialize ee.Geometry.Point ee.Geometry.Polygon ee.Geometry.MultiLineString ee.Geometry.prototype.toGeoJSON ee.Image.prototype.getThumbId ee.Image.prototype.select ee.Image.prototype.clip ee.Image.cat ee.Image.rgb ee.Image.prototype.getDownloadURL ee.Image.prototype.expression ee.Image.prototype.getThumbURL ee.Image.prototype.rename ee.Image ee.Image.prototype.getMapId ee.Image.prototype.getMap ee.Image.prototype.getInfo ee.ImageCollection.prototype.getMap ee.ImageCollection.prototype.getInfo ee.ImageCollection.prototype.select ee.ImageCollection.prototype.linkCollection ee.ImageCollection.prototype.first ee.ImageCollection ee.ImageCollection.prototype.getVideoThumbURL ee.ImageCollection.prototype.getFilmstripThumbURL ee.ImageCollection.prototype.getMapId ee.List ee.Number ee.Serializer.toReadableCloudApiJSON ee.Serializer.toReadableJSON ee.Serializer.encodeCloudApiPretty ee.Serializer.encode ee.Serializer.toJSON ee.Serializer.toCloudApiJSON ee.Serializer.encodeCloudApi ee.String ee.Terrain".split(" "), 
  orderedParamLists = [["name", "var_args"], ["name"], ["name", "namedArgs"], "collection opt_description opt_table opt_overwrite opt_append opt_selectors opt_maxVertices opt_priority".split(" "), "collection opt_description opt_bucket opt_fileNamePrefix opt_framesPerSecond opt_dimensions opt_region opt_scale opt_crs opt_crsTransform opt_maxPixels opt_maxFrames opt_priority".split(" "), "image opt_description opt_bucket opt_fileNamePrefix opt_dimensions opt_region opt_scale opt_crs opt_crsTransform opt_maxPixels opt_shardSize opt_fileDimensions opt_skipEmptyTiles opt_fileFormat opt_formatOptions opt_priority".split(" "), 
  "collection opt_description opt_assetId opt_maxFeaturesPerTile opt_thinningStrategy opt_thinningRanking opt_zOrderRanking opt_priority".split(" "), "collection opt_description opt_folder opt_fileNamePrefix opt_framesPerSecond opt_dimensions opt_region opt_scale opt_crs opt_crsTransform opt_maxPixels opt_maxFrames opt_priority".split(" "), "collection opt_description opt_folder opt_fileNamePrefix opt_fileFormat opt_selectors opt_maxVertices opt_priority".split(" "), ["collection", "opt_description", 
  "opt_assetId", "opt_maxVertices", "opt_priority"], ["classifier", "opt_description", "opt_assetId", "opt_priority"], "image opt_description opt_folder opt_fileNamePrefix opt_dimensions opt_region opt_scale opt_crs opt_crsTransform opt_maxPixels opt_shardSize opt_fileDimensions opt_skipEmptyTiles opt_fileFormat opt_formatOptions opt_priority".split(" "), "collection opt_description opt_bucket opt_fileNamePrefix opt_fileFormat opt_selectors opt_maxVertices opt_priority".split(" "), "image opt_description opt_assetId opt_pyramidingPolicy opt_dimensions opt_region opt_scale opt_crs opt_crsTransform opt_maxPixels opt_shardSize opt_priority".split(" "), 
  "image opt_description opt_bucket opt_fileFormat opt_path opt_writePublicTiles opt_scale opt_maxZoom opt_minZoom opt_region opt_skipEmptyTiles opt_mapsApiKey opt_bucketCorsUris opt_priority".split(" "), "collection opt_description opt_bucket opt_fileNamePrefix opt_framesPerSecond opt_writePublicTiles opt_minZoom opt_maxZoom opt_scale opt_region opt_skipEmptyTiles opt_minTimeMachineZoomSubset opt_maxTimeMachineZoomSubset opt_tileWidth opt_tileHeight opt_tileStride opt_videoFormat opt_version opt_mapsApiKey opt_bucketCorsUris opt_priority".split(" "), 
  ["name", "operator", "value"], ["property", "opt_ascending"], ["max", "opt_property", "opt_ascending"], ["filter"], ["geometry"], ["algorithm", "opt_first"], ["start", "opt_end"], ["algorithm", "opt_dropNulls"], ["func", "var_args"], ["callback"], ["legacy"], ["opt_callback"], ["parent", "opt_params", "opt_callback"], ["params", "opt_callback"], ["assetId", "opt_callback"], ["id"], ["opt_success", "opt_error"], ["params", "opt_callback"], ["asset", "params", "opt_callback"], ["id", "opt_callback"], 
  ["opt_callback"], ["tag"], ["operationName", "opt_callback"], ["requestedId", "opt_callback"], ["privateKey", "opt_success", "opt_error", "opt_extraScopes", "opt_suppressDefaultScopes"], ["tag"], ["id", "opt_callback"], ["opt_count", "opt_callback"], ["value", "opt_path", "opt_force", "opt_properties", "opt_callback"], ["obj", "opt_callback"], ["opt_resetDefault"], ["taskId", "opt_callback"], ["params", "opt_callback"], ["params", "opt_callback"], ["assetId", "asset", "updateFields", "opt_callback"], 
  ["taskId", "action", "opt_callback"], ["params", "opt_callback"], ["params", "opt_callback"], ["taskId", "opt_callback"], ["taskId", "request", "opt_callback"], ["taskId", "params", "opt_callback"], ["path", "opt_force", "opt_callback"], ["assetId", "aclUpdate", "opt_callback"], ["parent", "opt_params", "opt_callback"], ["id"], ["sourceId", "destinationId", "opt_callback"], "clientId success opt_error opt_extraScopes opt_onImmediateFailed opt_suppressDefaultScopes".split(" "), ["params", "opt_callback"], 
  ["assetId", "properties", "opt_callback"], ["opt_callback"], ["sourceId", "destinationId", "opt_overwrite", "opt_callback"], ["params", "opt_callback"], ["project", "opt_callback"], ["id"], ["clientId", "success", "opt_error", "opt_extraScopes", "opt_onImmediateFailed"], ["rootId", "opt_callback"], ["id", "x", "y", "z"], ["opt_limit", "opt_callback"], ["taskId", "request", "opt_callback"], ["assetId", "opt_callback"], ["opt_limit", "opt_callback"], ["operationName", "opt_callback"], [], ["date", 
  "opt_tz"], ["json"], ["json"], ["json"], ["json"], ["opt_dict"], ["func", "var_args"], "opt_baseurl opt_tileurl opt_successCallback opt_errorCallback opt_xsrfToken opt_project".split(" "), [], [], [], ["func", "namedArgs"], [], ["var_args"], [], ["geometry", "opt_properties"], ["opt_callback"], ["opt_visParams", "opt_callback"], ["opt_visParams", "opt_callback"], ["opt_visParams", "opt_callback"], ["propertySelectors", "opt_newProperties", "opt_retainGeometry"], ["args", "opt_column"], ["opt_format", 
  "opt_selectors", "opt_filename", "opt_callback"], ["opt_visParams", "opt_callback"], ["opt_callback"], ["geometry", "opt_errorMargin"], ["var_args"], ["name", "operator", "value"], [], ["name", "value"], ["name", "value"], ["opt_leftField", "opt_rightValue", "opt_rightField", "opt_leftValue"], ["name", "value"], ["var_args"], ["name", "value"], ["name", "value"], ["opt_filter"], ["name", "value"], ["start", "opt_end"], ["namedArgs"], ["var_args"], ["coords", "opt_proj"], ["west", "south", "east", 
  "north"], [], ["geoJson", "opt_proj", "opt_geodesic", "opt_evenOdd"], ["coords", "opt_proj", "opt_geodesic", "opt_maxError"], ["coords", "opt_proj", "opt_geodesic", "opt_maxError", "opt_evenOdd"], ["coords", "opt_proj", "opt_geodesic", "opt_maxError"], ["coords", "opt_proj", "opt_geodesic", "opt_evenOdd"], ["legacy"], ["coords", "opt_proj"], ["coords", "opt_proj", "opt_geodesic", "opt_maxError", "opt_evenOdd"], ["coords", "opt_proj", "opt_geodesic", "opt_maxError"], [], ["params", "opt_callback"], 
  ["var_args"], ["geometry"], ["var_args"], ["r", "g", "b"], ["params", "opt_callback"], ["expression", "opt_map"], ["params", "opt_callback"], ["var_args"], ["opt_args"], ["opt_visParams", "opt_callback"], ["opt_visParams", "opt_callback"], ["opt_callback"], ["opt_visParams", "opt_callback"], ["opt_callback"], ["selectors", "opt_names"], ["imageCollection", "opt_linkedBands", "opt_linkedProperties", "opt_matchPropertyName"], [], ["args"], ["params", "opt_callback"], ["params", "opt_callback"], ["opt_visParams", 
  "opt_callback"], ["list"], ["number"], ["obj"], ["obj"], ["obj"], ["obj", "opt_isCompound"], ["obj"], ["obj"], ["obj"], ["string"], []];
  [ee.ApiFunction._call, ee.ApiFunction.lookup, ee.ApiFunction._apply, module$contents$ee$batch_Export.table.toBigQuery, module$contents$ee$batch_Export.video.toCloudStorage, module$contents$ee$batch_Export.image.toCloudStorage, module$contents$ee$batch_Export.table.toFeatureView, module$contents$ee$batch_Export.video.toDrive, module$contents$ee$batch_Export.table.toDrive, module$contents$ee$batch_Export.table.toAsset, module$contents$ee$batch_Export.classifier.toAsset, module$contents$ee$batch_Export.image.toDrive, 
  module$contents$ee$batch_Export.table.toCloudStorage, module$contents$ee$batch_Export.image.toAsset, module$contents$ee$batch_Export.map.toCloudStorage, module$contents$ee$batch_Export.videoMap.toCloudStorage, ee.Collection.prototype.filterMetadata, ee.Collection.prototype.sort, ee.Collection.prototype.limit, ee.Collection.prototype.filter, ee.Collection.prototype.filterBounds, ee.Collection.prototype.iterate, ee.Collection.prototype.filterDate, ee.Collection.prototype.map, ee.ComputedObject.prototype.aside, 
  ee.ComputedObject.prototype.evaluate, ee.ComputedObject.prototype.serialize, ee.ComputedObject.prototype.getInfo, ee.data.listImages, ee.data.getDownloadId, ee.data.getAssetAcl, ee.data.makeDownloadUrl, ee.data.authenticateViaPopup, ee.data.getFeatureViewTilesKey, ee.data.listFeatures, ee.data.getAsset, ee.data.getAssetRoots, ee.data.setWorkloadTag, ee.data.getOperation, ee.data.createAssetHome, ee.data.authenticateViaPrivateKey, ee.data.setDefaultWorkloadTag, ee.data.getInfo, ee.data.newTaskId, 
  ee.data.createAsset, ee.data.computeValue, ee.data.resetWorkloadTag, ee.data.cancelTask, ee.data.getThumbId, ee.data.getVideoThumbId, ee.data.updateAsset, ee.data.updateTask, ee.data.getList, ee.data.getFilmstripThumbId, ee.data.getTaskStatus, ee.data.startIngestion, ee.data.startProcessing, ee.data.createFolder, ee.data.setAssetAcl, ee.data.listAssets, ee.data.makeThumbUrl, ee.data.renameAsset, ee.data.authenticateViaOauth, ee.data.getMapId, ee.data.setAssetProperties, ee.data.getTaskList, ee.data.copyAsset, 
  ee.data.getTableDownloadId, ee.data.listBuckets, ee.data.makeTableDownloadUrl, ee.data.authenticate, ee.data.getAssetRootQuota, ee.data.getTileUrl, ee.data.getTaskListWithLimit, ee.data.startTableIngestion, ee.data.deleteAsset, ee.data.listOperations, ee.data.cancelOperation, ee.data.getWorkloadTag, ee.Date, ee.Deserializer.decode, ee.Deserializer.decodeCloudApi, ee.Deserializer.fromCloudApiJSON, ee.Deserializer.fromJSON, ee.Dictionary, ee.call, ee.initialize, ee.reset, ee.Algorithms, ee.InitState, 
  ee.apply, ee.TILE_SIZE, ee.Element.prototype.set, ee.Encodable.SourceFrame, ee.Feature, ee.Feature.prototype.getInfo, ee.Feature.prototype.getMapId, ee.Feature.prototype.getMap, ee.FeatureCollection.prototype.getMapId, ee.FeatureCollection.prototype.select, ee.FeatureCollection, ee.FeatureCollection.prototype.getDownloadURL, ee.FeatureCollection.prototype.getMap, ee.FeatureCollection.prototype.getInfo, ee.Filter.bounds, ee.Filter.and, ee.Filter.metadata, ee.Filter.prototype.not, ee.Filter.neq, 
  ee.Filter.gt, ee.Filter.inList, ee.Filter.lt, ee.Filter.or, ee.Filter.lte, ee.Filter.gte, ee.Filter, ee.Filter.eq, ee.Filter.date, ee.Function.prototype.apply, ee.Function.prototype.call, ee.Geometry.MultiPoint, ee.Geometry.BBox, ee.Geometry.prototype.toGeoJSONString, ee.Geometry, ee.Geometry.LineString, ee.Geometry.MultiPolygon, ee.Geometry.LinearRing, ee.Geometry.Rectangle, ee.Geometry.prototype.serialize, ee.Geometry.Point, ee.Geometry.Polygon, ee.Geometry.MultiLineString, ee.Geometry.prototype.toGeoJSON, 
  ee.Image.prototype.getThumbId, ee.Image.prototype.select, ee.Image.prototype.clip, ee.Image.cat, ee.Image.rgb, ee.Image.prototype.getDownloadURL, ee.Image.prototype.expression, ee.Image.prototype.getThumbURL, ee.Image.prototype.rename, ee.Image, ee.Image.prototype.getMapId, ee.Image.prototype.getMap, ee.Image.prototype.getInfo, ee.ImageCollection.prototype.getMap, ee.ImageCollection.prototype.getInfo, ee.ImageCollection.prototype.select, ee.ImageCollection.prototype.linkCollection, ee.ImageCollection.prototype.first, 
  ee.ImageCollection, ee.ImageCollection.prototype.getVideoThumbURL, ee.ImageCollection.prototype.getFilmstripThumbURL, ee.ImageCollection.prototype.getMapId, ee.List, ee.Number, ee.Serializer.toReadableCloudApiJSON, ee.Serializer.toReadableJSON, ee.Serializer.encodeCloudApiPretty, ee.Serializer.encode, ee.Serializer.toJSON, ee.Serializer.toCloudApiJSON, ee.Serializer.encodeCloudApi, ee.String, ee.Terrain].forEach(function(fn, i) {
    fn && (exportedFnInfo[fn.toString()] = {name:orderedFnNames[i], paramNames:orderedParamLists[i]});
  });
  goog.global.EXPORTED_FN_INFO = exportedFnInfo;
})();

