/**
 * @license
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

(function() {
  'use strict';

  const JSON_PREFIX = ')]}\'';

  Polymer({
    is: 'gr-serviceuser-ssh-panel',
    _legacyUndefinedCheck: true,

    properties: {
      _restApi: Object,
      _serviceUser: Object,
      _keys: Array,
      /** @type {?} */
      _keyToView: Object,
      _newKey: {
        type: String,
        value: '',
      },
      _keysToRemove: {
        type: Array,
        value() { return []; },
      },
    },

    loadData(restApi, serviceUser) {
      this._restApi = restApi;
      this._serviceUser = serviceUser;
      return this._restApi.get(`${this._serviceUser._account_id}/sshkeys`)
          .then(keys => {
            if (!keys) {
              this._keys = [];
              return;
            }
            this._keys = keys;
          });
    },

    _getStatusLabel(isValid) {
      return isValid ? 'Valid' : 'Invalid';
    },

    _showKey(e) {
      const el = Polymer.dom(e).localTarget;
      const index = parseInt(el.getAttribute('data-index'), 10);
      this._keyToView = this._keys[index];
      this.$.viewKeyOverlay.open();
    },

    _closeOverlay() {
      this.$.viewKeyOverlay.close();
    },

    _handleDeleteKey(e) {
      const el = Polymer.dom(e).localTarget;
      const index = parseInt(el.getAttribute('data-index'), 10);
      this.push('_keysToRemove', this._keys[index]);

      const promises = this._keysToRemove.map(key => {
        this._restApi.delete(`${this._serviceUser._account_id}/sshkeys/${key.seq}`);
      });

      return Promise.all(promises).then(() => {
        this.splice('_keys', index, 1);
        this._keysToRemove = [];
      });
    },

    _handleAddKey() {
      this.$.addButton.disabled = true;
      this.$.newKey.disabled = true;
      return this._restApi.post(`${this._serviceUser._account_id}/sshkeys`,
          this._newKey.trim(), null, 'plain/text')
        .then(key => {
          this.push('_keys', key);
        }).catch(() => {
          this.$.addButton.disabled = false;
          this.$.newKey.disabled = false;
        });
    },

    _computeAddButtonDisabled(newKey) {
      return !newKey.length;
    },
  });
})();

@@ -657,40 +657,8 @@
 ';%0A%0A
-  const JSON_PREFIX = ')%5D%7D%5C'';%0A%0A
   Po

Remove unused JSON_PREFIX constant