function $AdfKeyStroke$$($keyCode$$, $modifiers$$, $stringForm$$) {
  this.Init($keyCode$$, $modifiers$$, $stringForm$$);
}
$goog$exportSymbol$$("AdfKeyStroke", $AdfKeyStroke$$);
$AdfObject$$.$createSubclass$($AdfKeyStroke$$);
$AdfKeyStroke$$.$SHIFT_MASK$ = 1;
$goog$exportSymbol$$("AdfKeyStroke.SHIFT_MASK", $AdfKeyStroke$$.$SHIFT_MASK$);
$AdfKeyStroke$$.$CTRL_MASK$ = 2;
$goog$exportSymbol$$("AdfKeyStroke.CTRL_MASK", $AdfKeyStroke$$.$CTRL_MASK$);
$AdfKeyStroke$$.$META_MASK$ = 4;
$goog$exportSymbol$$("AdfKeyStroke.META_MASK", $AdfKeyStroke$$.$META_MASK$);
$AdfKeyStroke$$.$ALT_MASK$ = 8;
$goog$exportSymbol$$("AdfKeyStroke.ALT_MASK", $AdfKeyStroke$$.$ALT_MASK$);
$AdfKeyStroke$$.$BACKSPACE_KEY$ = 8;
$goog$exportSymbol$$("AdfKeyStroke.BACKSPACE_KEY", $AdfKeyStroke$$.$BACKSPACE_KEY$);
$AdfKeyStroke$$.$TAB_KEY$ = 9;
$goog$exportSymbol$$("AdfKeyStroke.TAB_KEY", $AdfKeyStroke$$.$TAB_KEY$);
$AdfKeyStroke$$.$SHIFT_KEY$ = 16;
$goog$exportSymbol$$("AdfKeyStroke.SHIFT_KEY", $AdfKeyStroke$$.$SHIFT_KEY$);
$AdfKeyStroke$$.$CTRL_KEY$ = 17;
$goog$exportSymbol$$("AdfKeyStroke.CTRL_KEY", $AdfKeyStroke$$.$CTRL_KEY$);
$AdfKeyStroke$$.$ALT_KEY$ = 18;
$goog$exportSymbol$$("AdfKeyStroke.ALT_KEY", $AdfKeyStroke$$.$ALT_KEY$);
$AdfKeyStroke$$.$ARROWDOWN_KEY$ = 40;
$goog$exportSymbol$$("AdfKeyStroke.ARROWDOWN_KEY", $AdfKeyStroke$$.$ARROWDOWN_KEY$);
$AdfKeyStroke$$.$ARROWUP_KEY$ = 38;
$goog$exportSymbol$$("AdfKeyStroke.ARROWUP_KEY", $AdfKeyStroke$$.$ARROWUP_KEY$);
$AdfKeyStroke$$.$ARROWRIGHT_KEY$ = 39;
$goog$exportSymbol$$("AdfKeyStroke.ARROWRIGHT_KEY", $AdfKeyStroke$$.$ARROWRIGHT_KEY$);
$AdfKeyStroke$$.$ARROWLEFT_KEY$ = 37;
$goog$exportSymbol$$("AdfKeyStroke.ARROWLEFT_KEY", $AdfKeyStroke$$.$ARROWLEFT_KEY$);
$AdfKeyStroke$$.$ESC_KEY$ = 27;
$goog$exportSymbol$$("AdfKeyStroke.ESC_KEY", $AdfKeyStroke$$.$ESC_KEY$);
$AdfKeyStroke$$.$ENTER_KEY$ = 13;
$goog$exportSymbol$$("AdfKeyStroke.ENTER_KEY", $AdfKeyStroke$$.$ENTER_KEY$);
$AdfKeyStroke$$.$SPACE_KEY$ = 32;
$goog$exportSymbol$$("AdfKeyStroke.SPACE_KEY", $AdfKeyStroke$$.$SPACE_KEY$);
$AdfKeyStroke$$.$PAGEUP_KEY$ = 33;
$goog$exportSymbol$$("AdfKeyStroke.PAGEUP_KEY", $AdfKeyStroke$$.$PAGEUP_KEY$);
$AdfKeyStroke$$.$PAGEDOWN_KEY$ = 34;
$goog$exportSymbol$$("AdfKeyStroke.PAGEDOWN_KEY", $AdfKeyStroke$$.$PAGEDOWN_KEY$);
$AdfKeyStroke$$.$END_KEY$ = 35;
$goog$exportSymbol$$("AdfKeyStroke.END_KEY", $AdfKeyStroke$$.$END_KEY$);
$AdfKeyStroke$$.$HOME_KEY$ = 36;
$goog$exportSymbol$$("AdfKeyStroke.HOME_KEY", $AdfKeyStroke$$.$HOME_KEY$);
$AdfKeyStroke$$.$INSERT_KEY$ = 45;
$goog$exportSymbol$$("AdfKeyStroke.INSERT_KEY", $AdfKeyStroke$$.$INSERT_KEY$);
$AdfKeyStroke$$.$DELETE_KEY$ = 46;
$goog$exportSymbol$$("AdfKeyStroke.DELETE_KEY", $AdfKeyStroke$$.$DELETE_KEY$);
$AdfKeyStroke$$.$A_KEY$ = 65;
$goog$exportSymbol$$("AdfKeyStroke.A_KEY", $AdfKeyStroke$$.$A_KEY$);
$AdfKeyStroke$$.$C_KEY$ = 67;
$goog$exportSymbol$$("AdfKeyStroke.C_KEY", $AdfKeyStroke$$.$C_KEY$);
$AdfKeyStroke$$.$M_KEY$ = 77;
$goog$exportSymbol$$("AdfKeyStroke.M_KEY", $AdfKeyStroke$$.$M_KEY$);
$AdfKeyStroke$$.$P_KEY$ = 80;
$goog$exportSymbol$$("AdfKeyStroke.P_KEY", $AdfKeyStroke$$.$P_KEY$);
$AdfKeyStroke$$.$R_KEY$ = 82;
$goog$exportSymbol$$("AdfKeyStroke.R_KEY", $AdfKeyStroke$$.$R_KEY$);
$AdfKeyStroke$$.$V_KEY$ = 86;
$goog$exportSymbol$$("AdfKeyStroke.V_KEY", $AdfKeyStroke$$.$V_KEY$);
$AdfKeyStroke$$.$W_KEY$ = 87;
$goog$exportSymbol$$("AdfKeyStroke.W_KEY", $AdfKeyStroke$$.$W_KEY$);
$AdfKeyStroke$$.$X_KEY$ = 88;
$goog$exportSymbol$$("AdfKeyStroke.X_KEY", $AdfKeyStroke$$.$X_KEY$);
$AdfKeyStroke$$.$F1_KEY$ = 112;
$goog$exportSymbol$$("AdfKeyStroke.F1_KEY", $AdfKeyStroke$$.$F1_KEY$);
$AdfKeyStroke$$.$F2_KEY$ = 113;
$goog$exportSymbol$$("AdfKeyStroke.F2_KEY", $AdfKeyStroke$$.$F2_KEY$);
$AdfKeyStroke$$.$F3_KEY$ = 114;
$goog$exportSymbol$$("AdfKeyStroke.F3_KEY", $AdfKeyStroke$$.$F3_KEY$);
$AdfKeyStroke$$.$F4_KEY$ = 115;
$goog$exportSymbol$$("AdfKeyStroke.F4_KEY", $AdfKeyStroke$$.$F4_KEY$);
$AdfKeyStroke$$.$F5_KEY$ = 116;
$goog$exportSymbol$$("AdfKeyStroke.F5_KEY", $AdfKeyStroke$$.$F5_KEY$);
$AdfKeyStroke$$.$F6_KEY$ = 117;
$goog$exportSymbol$$("AdfKeyStroke.F6_KEY", $AdfKeyStroke$$.$F6_KEY$);
$AdfKeyStroke$$.$F7_KEY$ = 118;
$goog$exportSymbol$$("AdfKeyStroke.F7_KEY", $AdfKeyStroke$$.$F7_KEY$);
$AdfKeyStroke$$.$F8_KEY$ = 119;
$goog$exportSymbol$$("AdfKeyStroke.F8_KEY", $AdfKeyStroke$$.$F8_KEY$);
$AdfKeyStroke$$.$F9_KEY$ = 120;
$goog$exportSymbol$$("AdfKeyStroke.F9_KEY", $AdfKeyStroke$$.$F9_KEY$);
$AdfKeyStroke$$.$F10_KEY$ = 121;
$goog$exportSymbol$$("AdfKeyStroke.F10_KEY", $AdfKeyStroke$$.$F10_KEY$);
$AdfKeyStroke$$.$F11_KEY$ = 122;
$goog$exportSymbol$$("AdfKeyStroke.F11_KEY", $AdfKeyStroke$$.$F11_KEY$);
$AdfKeyStroke$$.$F12_KEY$ = 123;
$goog$exportSymbol$$("AdfKeyStroke.F12_KEY", $AdfKeyStroke$$.$F12_KEY$);
$AdfKeyStroke$$.$InitClass$ = function $$AdfKeyStroke$$$$InitClass$$() {
  this.$_MODIFIER_STRINGS$ = Array(16);
  this.$_MODIFIER_DISPLAY_STRINGS$ = Array(16);
  this.$_CACHE$ = {};
  for (var $keyCodeToNameList_modifierNameToFlag$$ = ["BACK_SPACE", $AdfKeyStroke$$.$BACKSPACE_KEY$, "CLEAR", 12, "SHIFT", $AdfKeyStroke$$.$SHIFT_KEY$, "CONTROL", $AdfKeyStroke$$.$CTRL_KEY$, "ALT", 18, "CAPS_LOCK", 20, "TAB", $AdfKeyStroke$$.$TAB_KEY$, "DOWN", $AdfKeyStroke$$.$ARROWDOWN_KEY$, "UP", $AdfKeyStroke$$.$ARROWUP_KEY$, "RIGHT", $AdfKeyStroke$$.$ARROWRIGHT_KEY$, "LEFT", $AdfKeyStroke$$.$ARROWLEFT_KEY$, "ESCAPE", $AdfKeyStroke$$.$ESC_KEY$, "ENTER", $AdfKeyStroke$$.$ENTER_KEY$, "SPACE", $AdfKeyStroke$$.$SPACE_KEY$, 
  "PAGE_UP", $AdfKeyStroke$$.$PAGEUP_KEY$, "PAGE_DOWN", $AdfKeyStroke$$.$PAGEDOWN_KEY$, "END", $AdfKeyStroke$$.$END_KEY$, "HOME", $AdfKeyStroke$$.$HOME_KEY$, "INSERT", $AdfKeyStroke$$.$INSERT_KEY$, "DELETE", $AdfKeyStroke$$.$DELETE_KEY$, "F1", $AdfKeyStroke$$.$F1_KEY$, "F2", $AdfKeyStroke$$.$F2_KEY$, "F3", $AdfKeyStroke$$.$F3_KEY$, "F4", $AdfKeyStroke$$.$F4_KEY$, "F5", $AdfKeyStroke$$.$F5_KEY$, "F6", $AdfKeyStroke$$.$F6_KEY$, "F7", $AdfKeyStroke$$.$F7_KEY$, "F8", $AdfKeyStroke$$.$F8_KEY$, "F9", $AdfKeyStroke$$.$F9_KEY$, 
  "F10", $AdfKeyStroke$$.$F10_KEY$, "F11", $AdfKeyStroke$$.$F11_KEY$, "F12", $AdfKeyStroke$$.$F12_KEY$], $keyCodeMappings$$ = [], $i$$31$$ = $keyCodeToNameList_modifierNameToFlag$$.length - 1;0 <= $i$$31$$;$i$$31$$--) {
    var $currKeyCode$$ = $keyCodeToNameList_modifierNameToFlag$$[$i$$31$$];
    $i$$31$$--;
    var $currKeyName$$ = $keyCodeToNameList_modifierNameToFlag$$[$i$$31$$];
    $keyCodeMappings$$[$currKeyCode$$] = $currKeyName$$;
    $keyCodeMappings$$[$currKeyName$$] = $currKeyCode$$;
  }
  this.$_KEYCODE_MAPPINGS$ = $keyCodeMappings$$;
  this.$_SHIFT_MODIFIER$ = "shift";
  this.$_CTRL_MODIFIER$ = "ctrl";
  this.$_META_MODIFIER$ = "meta";
  this.$_ALT_MODIFIER$ = "alt";
  $keyCodeToNameList_modifierNameToFlag$$ = {};
  $keyCodeToNameList_modifierNameToFlag$$[this.$_SHIFT_MODIFIER$] = this.$SHIFT_MASK$;
  $keyCodeToNameList_modifierNameToFlag$$[this.$_CTRL_MODIFIER$] = this.$CTRL_MASK$;
  $keyCodeToNameList_modifierNameToFlag$$[this.$_META_MODIFIER$] = this.$META_MASK$;
  $keyCodeToNameList_modifierNameToFlag$$[this.$_ALT_MODIFIER$] = this.$ALT_MASK$;
  this.$_MODIFIER_NAME_TO_FLAG$ = $keyCodeToNameList_modifierNameToFlag$$;
};
$goog$exportSymbol$$("AdfKeyStroke.InitClass", $AdfKeyStroke$$.$InitClass$);
$AdfKeyStroke$$.prototype.Init = function $$AdfKeyStroke$$$$Init$($keyCode$$1$$, $modifiers$$1$$, $stringForm$$1$$) {
  $AdfAssert$$.$assertNumber$($keyCode$$1$$);
  $AdfAssert$$.$assertNumber$($modifiers$$1$$);
  $AdfAssert$$.$assertString$($stringForm$$1$$);
  $AdfKeyStroke$$.$superclass$.Init.call(this);
  this.$_keyCode$ = $keyCode$$1$$;
  this.$_modifiers$ = $modifiers$$1$$;
  this.$_stringForm$ = $stringForm$$1$$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfKeyStroke.prototype.Init", {Init:$AdfKeyStroke$$.prototype.Init});
$AdfKeyStroke$$.prototype.$getKeyCode$ = function $$AdfKeyStroke$$$$$getKeyCode$$() {
  return this.$_keyCode$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfKeyStroke.prototype.getKeyCode", {$getKeyCode$:$AdfKeyStroke$$.prototype.$getKeyCode$});
$AdfKeyStroke$$.prototype.$getModifiers$ = function $$AdfKeyStroke$$$$$getModifiers$$() {
  return this.$_modifiers$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfKeyStroke.prototype.getModifiers", {$getModifiers$:$AdfKeyStroke$$.prototype.$getModifiers$});
$AdfKeyStroke$$.$_getModifierString$ = function $$AdfKeyStroke$$$$_getModifierString$$($modifiers$$2$$) {
  $AdfAssert$$.$assertNumber$($modifiers$$2$$);
  var $modifierStrings$$ = $AdfKeyStroke$$.$_MODIFIER_STRINGS$, $buffer$$11_modifierString$$ = $modifierStrings$$[$modifiers$$2$$];
  null == $buffer$$11_modifierString$$ && ($buffer$$11_modifierString$$ = [], 0 != ($modifiers$$2$$ & $AdfKeyStroke$$.$SHIFT_MASK$) && $buffer$$11_modifierString$$.push($AdfKeyStroke$$.$_SHIFT_MODIFIER$), 0 != ($modifiers$$2$$ & $AdfKeyStroke$$.$CTRL_MASK$) && $buffer$$11_modifierString$$.push($AdfKeyStroke$$.$_CTRL_MODIFIER$), 0 != ($modifiers$$2$$ & $AdfKeyStroke$$.$META_MASK$) && $buffer$$11_modifierString$$.push($AdfKeyStroke$$.$_META_MODIFIER$), 0 != ($modifiers$$2$$ & $AdfKeyStroke$$.$ALT_MASK$) && 
  $buffer$$11_modifierString$$.push($AdfKeyStroke$$.$_ALT_MODIFIER$), $buffer$$11_modifierString$$ = $buffer$$11_modifierString$$.join(" "), $modifierStrings$$[$modifiers$$2$$] = $buffer$$11_modifierString$$);
  return $buffer$$11_modifierString$$;
};
$AdfKeyStroke$$.$_getModifierDisplayString$ = function $$AdfKeyStroke$$$$_getModifierDisplayString$$($modifiers$$3$$) {
  $AdfAssert$$.$assertNumber$($modifiers$$3$$);
  var $modifierDisplayStrings$$1$$ = $AdfKeyStroke$$.$_MODIFIER_DISPLAY_STRINGS$, $agent$$4_modifierDisplayString$$ = $modifierDisplayStrings$$1$$[$modifiers$$3$$];
  if (null == $agent$$4_modifierDisplayString$$) {
    var $agent$$4_modifierDisplayString$$ = $AdfAgent$$.$AGENT$, $buffer$$12$$ = Array(4);
    0 != ($modifiers$$3$$ & $AdfKeyStroke$$.$SHIFT_MASK$) && $buffer$$12$$.push($agent$$4_modifierDisplayString$$.$getModifierDisplayName$($AdfKeyStroke$$.$SHIFT_MASK$));
    0 != ($modifiers$$3$$ & $AdfKeyStroke$$.$CTRL_MASK$) && $buffer$$12$$.push($agent$$4_modifierDisplayString$$.$getModifierDisplayName$($AdfKeyStroke$$.$CTRL_MASK$));
    0 != ($modifiers$$3$$ & $AdfKeyStroke$$.$META_MASK$) && $buffer$$12$$.push($agent$$4_modifierDisplayString$$.$getModifierDisplayName$($AdfKeyStroke$$.$META_MASK$));
    0 != ($modifiers$$3$$ & $AdfKeyStroke$$.$ALT_MASK$) && $buffer$$12$$.push($agent$$4_modifierDisplayString$$.$getModifierDisplayName$($AdfKeyStroke$$.$ALT_MASK$));
    $agent$$4_modifierDisplayString$$ = $buffer$$12$$.join(" ");
    $modifierDisplayStrings$$1$$[$modifiers$$3$$] = $agent$$4_modifierDisplayString$$;
  }
  return $agent$$4_modifierDisplayString$$;
};
$AdfKeyStroke$$.$_getStringForm$ = function $$AdfKeyStroke$$$$_getStringForm$$($keyCode$$2$$, $modifiers$$4$$) {
  var $modifierString$$1$$ = $AdfKeyStroke$$.$_getModifierString$($modifiers$$4$$), $keyValue$$ = $AdfKeyStroke$$.$_getNameFromKeyCode$($keyCode$$2$$);
  return 0 == $modifierString$$1$$.length ? $keyValue$$ : $modifierString$$1$$ + " " + $keyValue$$;
};
$AdfKeyStroke$$.prototype.toString = function $$AdfKeyStroke$$$$toString$() {
  return $AdfKeyStroke$$.$superclass$.toString.call(this) + " " + this.$_stringForm$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfKeyStroke.prototype.toString", {toString:$AdfKeyStroke$$.prototype.toString});
$AdfKeyStroke$$.prototype.$toMarshalledString$ = function $$AdfKeyStroke$$$$$toMarshalledString$$() {
  return this.$_stringForm$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfKeyStroke.prototype.toMarshalledString", {$toMarshalledString$:$AdfKeyStroke$$.prototype.$toMarshalledString$});
$AdfKeyStroke$$.$getKeyStroke$ = function $$AdfKeyStroke$$$$getKeyStroke$$($keyCode$$3$$, $modifiers$$5$$) {
  $AdfAssert$$.$assertNumber$($keyCode$$3$$);
  $AdfAssert$$.$assertNumber$($modifiers$$5$$);
  $AdfObject$$.$ensureClassInitialization$($AdfKeyStroke$$);
  var $stringForm$$2$$ = $AdfKeyStroke$$.$_getStringForm$($keyCode$$3$$, $modifiers$$5$$), $keyCache$$ = $AdfKeyStroke$$.$_CACHE$, $keyStroke$$ = $keyCache$$[$stringForm$$2$$];
  null == $keyStroke$$ && ($keyStroke$$ = new $AdfKeyStroke$$($keyCode$$3$$, $modifiers$$5$$, $stringForm$$2$$), $keyCache$$[$stringForm$$2$$] = $keyStroke$$);
  return $keyStroke$$;
};
$goog$exportSymbol$$("AdfKeyStroke.getKeyStroke", $AdfKeyStroke$$.$getKeyStroke$);
$AdfKeyStroke$$.$getKeyStrokeFromMarshalledString$ = function $$AdfKeyStroke$$$$getKeyStrokeFromMarshalledString$$($keyString$$1$$) {
  $AdfAssert$$.$assertString$($keyString$$1$$);
  $AdfObject$$.$ensureClassInitialization$($AdfKeyStroke$$);
  var $cache$$2$$ = $AdfKeyStroke$$.$_CACHE$, $keyStroke$$1_tokens$$6$$ = $cache$$2$$[$keyString$$1$$];
  if (null == $keyStroke$$1_tokens$$6$$) {
    var $keyStroke$$1_tokens$$6$$ = $keyString$$1$$.split(" "), $lastTokenIndex$$ = $keyStroke$$1_tokens$$6$$.length - 1;
    $AdfAssert$$.assert(0 <= $lastTokenIndex$$);
    var $keyValue$$1_modifierNameToFlag$$1$$ = $keyStroke$$1_tokens$$6$$[$lastTokenIndex$$], $keyCode$$4$$;
    /^\d$/.test($keyValue$$1_modifierNameToFlag$$1$$) || ($keyCode$$4$$ = $AdfKeyStroke$$.$_KEYCODE_MAPPINGS$[$keyValue$$1_modifierNameToFlag$$1$$]);
    void 0 === $keyCode$$4$$ && ($keyCode$$4$$ = $keyValue$$1_modifierNameToFlag$$1$$.charCodeAt(0));
    for (var $keyValue$$1_modifierNameToFlag$$1$$ = $AdfKeyStroke$$.$_MODIFIER_NAME_TO_FLAG$, $modifiers$$6$$ = 0, $needsNormalization$$ = !1, $i$$32$$ = 0;$i$$32$$ < $lastTokenIndex$$;$i$$32$$++) {
      var $newModifier$$ = $keyValue$$1_modifierNameToFlag$$1$$[$keyStroke$$1_tokens$$6$$[$i$$32$$]];
      void 0 == $newModifier$$ && ($newModifier$$ = 0);
      $newModifier$$ <= $modifiers$$6$$ && ($needsNormalization$$ = !0);
      $modifiers$$6$$ |= $newModifier$$;
    }
    $needsNormalization$$ ? $keyStroke$$1_tokens$$6$$ = $AdfKeyStroke$$.$getKeyStroke$($keyCode$$4$$, $modifiers$$6$$) : ($keyStroke$$1_tokens$$6$$ = new $AdfKeyStroke$$($keyCode$$4$$, $modifiers$$6$$, $keyString$$1$$), $cache$$2$$[$keyString$$1$$] = $keyStroke$$1_tokens$$6$$);
  }
  return $keyStroke$$1_tokens$$6$$;
};
$goog$exportSymbol$$("AdfKeyStroke.getKeyStrokeFromMarshalledString", $AdfKeyStroke$$.$getKeyStrokeFromMarshalledString$);
$AdfKeyStroke$$.$_getNameFromKeyCode$ = function $$AdfKeyStroke$$$$_getNameFromKeyCode$$($keyCode$$5$$) {
  var $keyName$$ = $AdfKeyStroke$$.$_KEYCODE_MAPPINGS$[$keyCode$$5$$];
  null == $keyName$$ && ($keyName$$ = String.fromCharCode($keyCode$$5$$));
  return $keyName$$;
};
