Prv8 Shell
Server : Apache
System : Linux vps.urbanovitalino.adv.br 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64
User : urbanovitalinoad ( 1001)
PHP Version : 7.3.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/urbanovitalinoad/public_html/servicedesk/public/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/urbanovitalinoad/public_html/servicedesk/public/lib/gridstack.js.map
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/inherits/inherits.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/assert/assert.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/script-loader/addScript.js","webpack:///./lib/bundles/gridstack.js","webpack:///./node_modules/gridstack/dist/gridstack.js?3f50","webpack:///./node_modules/gridstack/dist/gridstack.js","webpack:///./node_modules/gridstack/dist/gridstack.jQueryUI.js?5a0a","webpack:///./node_modules/gridstack/dist/gridstack.jQueryUI.js","webpack:///./node_modules/gridstack/dist/gridstack.css?f515","webpack:///./node_modules/gridstack/dist/gridstack-extra.css?1393","webpack:///./node_modules/console-browserify/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/util/support/isBufferBrowser.js"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;AClFA;AACA,aAAa,mBAAO,CAAC,CAAM;AAC3B;AACA;AACA,CAAC;AACD,mBAAmB,mBAAO,CAAC,EAAuB;AAClD;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA,8CAAa;;AAEb,mBAAmB,mBAAO,CAAC,EAAe;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,CAAO;AAC1B;AACA;AACA;AACA,0BAA0B;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8BAA8B;AAC9B;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC,oBAAoB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACzfA;AACA;AACA;AACA;AACA;;AAEa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA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CA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,CAAoB;;AAE/C;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,mBAAmB,mBAAO,CAAC,EAAU;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D,2BAA2B,mDAAmD;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9rBA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA,C","file":"gridstack.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 493);\n","try {\n  var util = require('util');\n  if (typeof util.inherits !== 'function') throw '';\n  module.exports = util.inherits;\n} catch (e) {\n  module.exports = require('./inherits_browser.js');\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\nfunction compare(a, b) {\n  if (a === b) {\n    return 0;\n  }\n\n  var x = a.length;\n  var y = b.length;\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i];\n      y = b[i];\n      break;\n    }\n  }\n\n  if (x < y) {\n    return -1;\n  }\n  if (y < x) {\n    return 1;\n  }\n  return 0;\n}\nfunction isBuffer(b) {\n  if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n    return global.Buffer.isBuffer(b);\n  }\n  return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n//     node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n  return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n  return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n  if (isBuffer(arrbuf)) {\n    return false;\n  }\n  if (typeof global.ArrayBuffer !== 'function') {\n    return false;\n  }\n  if (typeof ArrayBuffer.isView === 'function') {\n    return ArrayBuffer.isView(arrbuf);\n  }\n  if (!arrbuf) {\n    return false;\n  }\n  if (arrbuf instanceof DataView) {\n    return true;\n  }\n  if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n    return true;\n  }\n  return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n//                             actual: actual,\n//                             expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n  if (!util.isFunction(func)) {\n    return;\n  }\n  if (functionsHaveNames) {\n    return func.name;\n  }\n  var str = func.toString();\n  var match = str.match(regex);\n  return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n  this.name = 'AssertionError';\n  this.actual = options.actual;\n  this.expected = options.expected;\n  this.operator = options.operator;\n  if (options.message) {\n    this.message = options.message;\n    this.generatedMessage = false;\n  } else {\n    this.message = getMessage(this);\n    this.generatedMessage = true;\n  }\n  var stackStartFunction = options.stackStartFunction || fail;\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, stackStartFunction);\n  } else {\n    // non v8 browsers so we can have a stacktrace\n    var err = new Error();\n    if (err.stack) {\n      var out = err.stack;\n\n      // try to strip useless frames\n      var fn_name = getName(stackStartFunction);\n      var idx = out.indexOf('\\n' + fn_name);\n      if (idx >= 0) {\n        // once we have located the function frame\n        // we need to strip out everything before it (and its line)\n        var next_line = out.indexOf('\\n', idx + 1);\n        out = out.substring(next_line + 1);\n      }\n\n      this.stack = out;\n    }\n  }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n  if (typeof s === 'string') {\n    return s.length < n ? s : s.slice(0, n);\n  } else {\n    return s;\n  }\n}\nfunction inspect(something) {\n  if (functionsHaveNames || !util.isFunction(something)) {\n    return util.inspect(something);\n  }\n  var rawname = getName(something);\n  var name = rawname ? ': ' + rawname : '';\n  return '[Function' +  name + ']';\n}\nfunction getMessage(self) {\n  return truncate(inspect(self.actual), 128) + ' ' +\n         self.operator + ' ' +\n         truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided.  All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n  throw new assert.AssertionError({\n    message: message,\n    actual: actual,\n    expected: expected,\n    operator: operator,\n    stackStartFunction: stackStartFunction\n  });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n  if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n  if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n  if (actual == expected) {\n    fail(actual, expected, message, '!=', assert.notEqual);\n  }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n  if (!_deepEqual(actual, expected, false)) {\n    fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n  }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n  if (!_deepEqual(actual, expected, true)) {\n    fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n  }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n  } else if (isBuffer(actual) && isBuffer(expected)) {\n    return compare(actual, expected) === 0;\n\n  // 7.2. If the expected value is a Date object, the actual value is\n  // equivalent if it is also a Date object that refers to the same time.\n  } else if (util.isDate(actual) && util.isDate(expected)) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3 If the expected value is a RegExp object, the actual value is\n  // equivalent if it is also a RegExp object with the same source and\n  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n  } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n    return actual.source === expected.source &&\n           actual.global === expected.global &&\n           actual.multiline === expected.multiline &&\n           actual.lastIndex === expected.lastIndex &&\n           actual.ignoreCase === expected.ignoreCase;\n\n  // 7.4. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if ((actual === null || typeof actual !== 'object') &&\n             (expected === null || typeof expected !== 'object')) {\n    return strict ? actual === expected : actual == expected;\n\n  // If both values are instances of typed arrays, wrap their underlying\n  // ArrayBuffers in a Buffer each to increase performance\n  // This optimization requires the arrays to have the same type as checked by\n  // Object.prototype.toString (aka pToString). Never perform binary\n  // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n  // bit patterns are not identical.\n  } else if (isView(actual) && isView(expected) &&\n             pToString(actual) === pToString(expected) &&\n             !(actual instanceof Float32Array ||\n               actual instanceof Float64Array)) {\n    return compare(new Uint8Array(actual.buffer),\n                   new Uint8Array(expected.buffer)) === 0;\n\n  // 7.5 For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else if (isBuffer(actual) !== isBuffer(expected)) {\n    return false;\n  } else {\n    memos = memos || {actual: [], expected: []};\n\n    var actualIndex = memos.actual.indexOf(actual);\n    if (actualIndex !== -1) {\n      if (actualIndex === memos.expected.indexOf(expected)) {\n        return true;\n      }\n    }\n\n    memos.actual.push(actual);\n    memos.expected.push(expected);\n\n    return objEquiv(actual, expected, strict, memos);\n  }\n}\n\nfunction isArguments(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n  if (a === null || a === undefined || b === null || b === undefined)\n    return false;\n  // if one is a primitive, the other must be same\n  if (util.isPrimitive(a) || util.isPrimitive(b))\n    return a === b;\n  if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n    return false;\n  var aIsArgs = isArguments(a);\n  var bIsArgs = isArguments(b);\n  if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n    return false;\n  if (aIsArgs) {\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return _deepEqual(a, b, strict);\n  }\n  var ka = objectKeys(a);\n  var kb = objectKeys(b);\n  var key, i;\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length !== kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] !== kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n      return false;\n  }\n  return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n  if (_deepEqual(actual, expected, false)) {\n    fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n  }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n  if (_deepEqual(actual, expected, true)) {\n    fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n  }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n  if (actual !== expected) {\n    fail(actual, expected, message, '===', assert.strictEqual);\n  }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n  if (actual === expected) {\n    fail(actual, expected, message, '!==', assert.notStrictEqual);\n  }\n};\n\nfunction expectedException(actual, expected) {\n  if (!actual || !expected) {\n    return false;\n  }\n\n  if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n    return expected.test(actual);\n  }\n\n  try {\n    if (actual instanceof expected) {\n      return true;\n    }\n  } catch (e) {\n    // Ignore.  The instanceof check doesn't work for arrow functions.\n  }\n\n  if (Error.isPrototypeOf(expected)) {\n    return false;\n  }\n\n  return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n  var error;\n  try {\n    block();\n  } catch (e) {\n    error = e;\n  }\n  return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n  var actual;\n\n  if (typeof block !== 'function') {\n    throw new TypeError('\"block\" argument must be a function');\n  }\n\n  if (typeof expected === 'string') {\n    message = expected;\n    expected = null;\n  }\n\n  actual = _tryBlock(block);\n\n  message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n            (message ? ' ' + message : '.');\n\n  if (shouldThrow && !actual) {\n    fail(actual, expected, 'Missing expected exception' + message);\n  }\n\n  var userProvidedMessage = typeof message === 'string';\n  var isUnwantedException = !shouldThrow && util.isError(actual);\n  var isUnexpectedException = !shouldThrow && actual && !expected;\n\n  if ((isUnwantedException &&\n      userProvidedMessage &&\n      expectedException(actual, expected)) ||\n      isUnexpectedException) {\n    fail(actual, expected, 'Got unwanted exception' + message);\n  }\n\n  if ((shouldThrow && actual && expected &&\n      !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n    throw actual;\n  }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n  _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n  _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n  if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n  equal: assert.strictEqual,\n  deepEqual: assert.deepStrictEqual,\n  notEqual: assert.notStrictEqual,\n  notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    if (hasOwn.call(obj, key)) keys.push(key);\n  }\n  return keys;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== \"undefined\")\n\t\t&& (console.error || console.log)(\"[Script Loader]\", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== \"undefined\" && typeof addEventListener === \"undefined\";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== \"undefined\" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== \"undefined\") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog(\"EvalError: No eval function available\");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n","/**\n * ---------------------------------------------------------------------\n * GLPI - Gestionnaire Libre de Parc Informatique\n * Copyright (C) 2015-2021 Teclib' and contributors.\n *\n * http://glpi-project.org\n *\n * based on GLPI - Gestionnaire Libre de Parc Informatique\n * Copyright (C) 2003-2014 by the INDEPNET Development Team.\n *\n * ---------------------------------------------------------------------\n *\n * LICENSE\n *\n * This file is part of GLPI.\n *\n * GLPI is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * GLPI is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with GLPI. If not, see <http://www.gnu.org/licenses/>.\n * ---------------------------------------------------------------------\n */\n// Gridstack jQuery plugin\nrequire('gridstack');\nrequire('gridstack/dist/gridstack.jQueryUI');\nrequire('gridstack/dist/gridstack.css');\nrequire('gridstack/dist/gridstack-extra.css');\n","require(\"!!/tmp/glpi-9.5.5/glpi/node_modules/script-loader/addScript.js\")(require(\"!!/tmp/glpi-9.5.5/glpi/node_modules/raw-loader/index.js!/tmp/glpi-9.5.5/glpi/node_modules/strip-sourcemap-loader/index.js!/tmp/glpi-9.5.5/glpi/node_modules/gridstack/dist/gridstack.js\"))","module.exports = \"/**\\n * gridstack.js 0.6.3\\n * https://gridstackjs.com/\\n * (c) 2014-2020 Alain Dumesny, Dylan Weiss, Pavel Reznikov\\n * gridstack.js may be freely distributed under the MIT license.\\n * @preserve\\n*/\\n(function(factory) {\\n  if (typeof define === 'function' && define.amd) {\\n    define(['jquery', 'exports'], factory);\\n  } else if (typeof exports !== 'undefined') {\\n    var jQueryModule;\\n\\n    try { jQueryModule = require('jquery'); } catch (e) {}\\n\\n    factory(jQueryModule || window.jQuery, exports);\\n  } else {\\n    factory(window.jQuery, window);\\n  }\\n})(function($, scope) {\\n\\n  // checks for obsolete method names\\n  var obsolete = function(f, oldName, newName, rev) {\\n    var wrapper = function() {\\n      console.warn('gridstack.js: Function `' + oldName + '` is deprecated in ' + rev + ' and has been replaced ' +\\n      'with `' + newName + '`. It will be **completely** removed in v1.0');\\n      return f.apply(this, arguments);\\n    };\\n    wrapper.prototype = f.prototype;\\n\\n    return wrapper;\\n  };\\n\\n  // checks for obsolete grid options (can be used for any fields, but msg is about options)\\n  var obsoleteOpts = function(opts, oldName, newName, rev) {\\n    if (opts[oldName] !== undefined) {\\n      opts[newName] = opts[oldName];\\n      console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + ' and has been replaced with `' +\\n        newName + '`. It will be **completely** removed in v1.0');\\n    }\\n  };\\n\\n  // checks for obsolete grid options which are gone\\n  var obsoleteOptsDel = function(opts, oldName, rev, info) {\\n    if (opts[oldName] !== undefined) {\\n      console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + info);\\n    }\\n  };\\n\\n  // checks for obsolete Jquery element attributes\\n  var obsoleteAttr = function(el, oldName, newName, rev) {\\n    var oldAttr = el.attr(oldName);\\n    if (oldAttr !== undefined) {\\n      el.attr(newName, oldAttr);\\n      console.warn('gridstack.js: attribute `' + oldName + '`=' + oldAttr + ' is deprecated on this object in ' + rev + ' and has been replaced with `' +\\n        newName + '`. It will be **completely** removed in v1.0');\\n    }\\n  };\\n\\n  var Utils = {\\n\\n    isIntercepted: function(a, b) {\\n      return !(a.x + a.width <= b.x || b.x + b.width <= a.x || a.y + a.height <= b.y || b.y + b.height <= a.y);\\n    },\\n\\n    sort: function(nodes, dir, column) {\\n      if (!column) {\\n        var widths = nodes.map(function(node) { return node.x + node.width; });\\n        column = Math.max.apply(Math, widths);\\n      }\\n\\n      if (dir === -1)\\n        return Utils.sortBy(nodes, function(n) { return -(n.x + n.y * column); });\\n      else\\n        return Utils.sortBy(nodes, function(n) { return (n.x + n.y * column); });\\n    },\\n\\n    createStylesheet: function(id) {\\n      var style = document.createElement('style');\\n      style.setAttribute('type', 'text/css');\\n      style.setAttribute('data-gs-style-id', id);\\n      if (style.styleSheet) {\\n        style.styleSheet.cssText = '';\\n      } else {\\n        style.appendChild(document.createTextNode(''));\\n      }\\n      document.getElementsByTagName('head')[0].appendChild(style);\\n      return style.sheet;\\n    },\\n\\n    removeStylesheet: function(id) {\\n      $('STYLE[data-gs-style-id=' + id + ']').remove();\\n    },\\n\\n    insertCSSRule: function(sheet, selector, rules, index) {\\n      if (typeof sheet.insertRule === 'function') {\\n        sheet.insertRule(selector + '{' + rules + '}', index);\\n      } else if (typeof sheet.addRule === 'function') {\\n        sheet.addRule(selector, rules, index);\\n      }\\n    },\\n\\n    toBool: function(v) {\\n      if (typeof v === 'boolean') {\\n        return v;\\n      }\\n      if (typeof v === 'string') {\\n        v = v.toLowerCase();\\n        return !(v === '' || v === 'no' || v === 'false' || v === '0');\\n      }\\n      return Boolean(v);\\n    },\\n\\n    _collisionNodeCheck: function(n) {\\n      return n !== this.node && Utils.isIntercepted(n, this.nn);\\n    },\\n\\n    _didCollide: function(bn) {\\n      return Utils.isIntercepted({x: this.n.x, y: this.newY, width: this.n.width, height: this.n.height}, bn);\\n    },\\n\\n    _isAddNodeIntercepted: function(n) {\\n      return Utils.isIntercepted({x: this.x, y: this.y, width: this.node.width, height: this.node.height}, n);\\n    },\\n\\n    parseHeight: function(val) {\\n      var height = val;\\n      var heightUnit = 'px';\\n      if (height && typeof height === 'string') {\\n        var match = height.match(/^(-[0-9]+\\\\.[0-9]+|[0-9]*\\\\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%)?$/);\\n        if (!match) {\\n          throw new Error('Invalid height');\\n        }\\n        heightUnit = match[2] || 'px';\\n        height = parseFloat(match[1]);\\n      }\\n      return {height: height, unit: heightUnit};\\n    },\\n\\n    without:  function(array, item) {\\n      var index = array.indexOf(item);\\n\\n      if (index !== -1) {\\n        array = array.slice(0);\\n        array.splice(index, 1);\\n      }\\n\\n      return array;\\n    },\\n\\n    sortBy: function(array, getter) {\\n      return array.slice(0).sort(function(left, right) {\\n        var valueLeft = getter(left);\\n        var valueRight = getter(right);\\n\\n        if (valueRight === valueLeft) {\\n          return 0;\\n        }\\n\\n        return valueLeft > valueRight ? 1 : -1;\\n      });\\n    },\\n\\n    defaults: function(target) {\\n      var sources = Array.prototype.slice.call(arguments, 1);\\n\\n      sources.forEach(function(source) {\\n        for (var prop in source) {\\n          if (source.hasOwnProperty(prop) && (!target.hasOwnProperty(prop) || target[prop] === undefined)) {\\n            target[prop] = source[prop];\\n          }\\n        }\\n      });\\n\\n      return target;\\n    },\\n\\n    clone: function(target) {\\n      return $.extend({}, target);\\n    },\\n\\n    throttle: function(callback, delay) {\\n      var isWaiting = false;\\n\\n      return function() {\\n        if (!isWaiting) {\\n          callback.apply(this, arguments);\\n          isWaiting = true;\\n          setTimeout(function() { isWaiting = false; }, delay);\\n        }\\n      };\\n    },\\n\\n    removePositioningStyles: function(el) {\\n      var style = el[0].style;\\n      if (style.position) {\\n        style.removeProperty('position');\\n      }\\n      if (style.left) {\\n        style.removeProperty('left');\\n      }\\n      if (style.top) {\\n        style.removeProperty('top');\\n      }\\n      if (style.width) {\\n        style.removeProperty('width');\\n      }\\n      if (style.height) {\\n        style.removeProperty('height');\\n      }\\n    },\\n    getScrollParent: function(el) {\\n      var returnEl;\\n      if (el === null) {\\n        returnEl = null;\\n      } else if (el.scrollHeight > el.clientHeight) {\\n        returnEl = el;\\n      } else {\\n        returnEl = Utils.getScrollParent(el.parentNode);\\n      }\\n      return returnEl;\\n    },\\n    updateScrollPosition: function(el, ui, distance) {\\n      // is widget in view?\\n      var rect = el.getBoundingClientRect();\\n      var innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight);\\n      if (rect.top < 0 ||\\n        rect.bottom > innerHeightOrClientHeight\\n      ) {\\n        // set scrollTop of first parent that scrolls\\n        // if parent is larger than el, set as low as possible\\n        // to get entire widget on screen\\n        var offsetDiffDown = rect.bottom - innerHeightOrClientHeight;\\n        var offsetDiffUp = rect.top;\\n        var scrollEl = Utils.getScrollParent(el);\\n        if (scrollEl !== null) {\\n          var prevScroll = scrollEl.scrollTop;\\n          if (rect.top < 0 && distance < 0) {\\n            // moving up\\n            if (el.offsetHeight > innerHeightOrClientHeight) {\\n              scrollEl.scrollTop += distance;\\n            } else {\\n              scrollEl.scrollTop += Math.abs(offsetDiffUp) > Math.abs(distance) ? distance : offsetDiffUp;\\n            }\\n          } else if (distance > 0) {\\n            // moving down\\n            if (el.offsetHeight > innerHeightOrClientHeight) {\\n              scrollEl.scrollTop += distance;\\n            } else {\\n              scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown;\\n            }\\n          }\\n          // move widget y by amount scrolled\\n          ui.position.top += scrollEl.scrollTop - prevScroll;\\n        }\\n      }\\n    }\\n  };\\n\\n  /**\\n  * @class GridStackDragDropPlugin\\n  * Base class for drag'n'drop plugin.\\n  */\\n  function GridStackDragDropPlugin(grid) {\\n    this.grid = grid;\\n  }\\n\\n  GridStackDragDropPlugin.registeredPlugins = [];\\n\\n  GridStackDragDropPlugin.registerPlugin = function(pluginClass) {\\n    GridStackDragDropPlugin.registeredPlugins.push(pluginClass);\\n  };\\n\\n  GridStackDragDropPlugin.prototype.resizable = function(el, opts) {\\n    return this;\\n  };\\n\\n  GridStackDragDropPlugin.prototype.draggable = function(el, opts) {\\n    return this;\\n  };\\n\\n  GridStackDragDropPlugin.prototype.droppable = function(el, opts) {\\n    return this;\\n  };\\n\\n  GridStackDragDropPlugin.prototype.isDroppable = function(el) {\\n    return false;\\n  };\\n\\n  GridStackDragDropPlugin.prototype.on = function(el, eventName, callback) {\\n    return this;\\n  };\\n\\n\\n  var idSeq = 0;\\n\\n  var GridStackEngine = function(column, onchange, float, maxRow, items) {\\n    this.column = column || 12;\\n    this.float = float || false;\\n    this.maxRow = maxRow || 0;\\n\\n    this.nodes = items || [];\\n    this.onchange = onchange || function() {};\\n\\n    this._addedNodes = [];\\n    this._removedNodes = [];\\n    this._batchMode = false;\\n  };\\n\\n  GridStackEngine.prototype.batchUpdate = function() {\\n    if (this._batchMode) return;\\n    this._batchMode = true;\\n    this._prevFloat = this.float;\\n    this.float = true; // let things go anywhere for now... commit() will restore and possibly reposition\\n  };\\n\\n  GridStackEngine.prototype.commit = function() {\\n    if (!this._batchMode) return;\\n    this._batchMode = false;\\n    this.float = this._prevFloat;\\n    delete this._prevFloat;\\n    this._packNodes();\\n    this._notify();\\n  };\\n\\n  // For Meteor support: https://github.com/gridstack/gridstack.js/pull/272\\n  GridStackEngine.prototype.getNodeDataByDOMEl = function(el) {\\n    return this.nodes.find(function(n) { return el.get(0) === n.el.get(0); });\\n  };\\n\\n  GridStackEngine.prototype._fixCollisions = function(node) {\\n    var self = this;\\n    this._sortNodes(-1);\\n\\n    var nn = node;\\n    var hasLocked = Boolean(this.nodes.find(function(n) { return n.locked; }));\\n    if (!this.float && !hasLocked) {\\n      nn = {x: 0, y: node.y, width: this.column, height: node.height};\\n    }\\n    while (true) {\\n      var collisionNode = this.nodes.find(Utils._collisionNodeCheck, {node: node, nn: nn});\\n      if (!collisionNode) { return; }\\n      this.moveNode(collisionNode, collisionNode.x, node.y + node.height,\\n        collisionNode.width, collisionNode.height, true);\\n    }\\n  };\\n\\n  GridStackEngine.prototype.isAreaEmpty = function(x, y, width, height) {\\n    var nn = {x: x || 0, y: y || 0, width: width || 1, height: height || 1};\\n    var collisionNode = this.nodes.find(function(n) {\\n      return Utils.isIntercepted(n, nn);\\n    });\\n    return !collisionNode;\\n  };\\n\\n  GridStackEngine.prototype._sortNodes = function(dir) {\\n    this.nodes = Utils.sort(this.nodes, dir, this.column);\\n  };\\n\\n  GridStackEngine.prototype._packNodes = function() {\\n    this._sortNodes();\\n\\n    if (this.float) {\\n      this.nodes.forEach(function(n, i) {\\n        if (n._updating || n._packY === undefined || n.y === n._packY) {\\n          return;\\n        }\\n\\n        var newY = n.y;\\n        while (newY >= n._packY) {\\n          var collisionNode = this.nodes\\n            .slice(0, i)\\n            .find(Utils._didCollide, {n: n, newY: newY});\\n\\n          if (!collisionNode) {\\n            n._dirty = true;\\n            n.y = newY;\\n          }\\n          --newY;\\n        }\\n      }, this);\\n    } else {\\n      this.nodes.forEach(function(n, i) {\\n        if (n.locked) { return; }\\n        while (n.y > 0) {\\n          var newY = n.y - 1;\\n          var canBeMoved = i === 0;\\n\\n          if (i > 0) {\\n            var collisionNode = this.nodes\\n              .slice(0, i)\\n              .find(Utils._didCollide, {n: n, newY: newY});\\n            canBeMoved = collisionNode === undefined;\\n          }\\n\\n          if (!canBeMoved) { break; }\\n          // Note: must be dirty (from last position) for GridStack::OnChange CB to update positions\\n          // and move items back. The user 'change' CB should detect changes from the original\\n          // starting position instead.\\n          n._dirty = (n.y !== newY);\\n          n.y = newY;\\n        }\\n      }, this);\\n    }\\n  };\\n\\n  GridStackEngine.prototype._prepareNode = function(node, resizing) {\\n    node = node || {};\\n    // if we're missing position, have the grid position us automatically (before we set them to 0,0)\\n    if (node.x === undefined || node.y === undefined || node.x === null || node.y === null) {\\n      node.autoPosition = true;\\n    }\\n\\n    // assign defaults for missing required fields\\n    var defaults = {width: 1, height: 1, x: 0, y: 0};\\n    node = Utils.defaults(node, defaults);\\n\\n    // convert any strings over\\n    node.x = parseInt(node.x);\\n    node.y = parseInt(node.y);\\n    node.width = parseInt(node.width);\\n    node.height = parseInt(node.height);\\n    node.autoPosition = node.autoPosition || false;\\n    node.noResize = node.noResize || false;\\n    node.noMove = node.noMove || false;\\n\\n    // check for NaN (in case messed up strings were passed. can't do parseInt() || defaults.x above as 0 is valid #)\\n    if (Number.isNaN(node.x))      { node.x = defaults.x; node.autoPosition = true; }\\n    if (Number.isNaN(node.y))      { node.y = defaults.y; node.autoPosition = true; }\\n    if (Number.isNaN(node.width))  { node.width = defaults.width; }\\n    if (Number.isNaN(node.height)) { node.height = defaults.height; }\\n\\n    if (node.width > this.column) {\\n      node.width = this.column;\\n    } else if (node.width < 1) {\\n      node.width = 1;\\n    }\\n\\n    if (node.height < 1) {\\n      node.height = 1;\\n    }\\n\\n    if (node.x < 0) {\\n      node.x = 0;\\n    }\\n\\n    if (node.x + node.width > this.column) {\\n      if (resizing) {\\n        node.width = this.column - node.x;\\n      } else {\\n        node.x = this.column - node.width;\\n      }\\n    }\\n\\n    if (node.y < 0) {\\n      node.y = 0;\\n    }\\n\\n    return node;\\n  };\\n\\n  GridStackEngine.prototype._notify = function() {\\n    if (this._batchMode) { return; }\\n    var args = Array.prototype.slice.call(arguments, 0);\\n    args[0] = (args[0] === undefined ? [] : (Array.isArray(args[0]) ? args[0] : [args[0]]) );\\n    args[1] = (args[1] === undefined ? true : args[1]);\\n    var dirtyNodes = args[0].concat(this.getDirtyNodes());\\n    this.onchange(dirtyNodes, args[1]);\\n  };\\n\\n  GridStackEngine.prototype.cleanNodes = function() {\\n    if (this._batchMode) { return; }\\n    this.nodes.forEach(function(n) { delete n._dirty; });\\n  };\\n\\n  GridStackEngine.prototype.getDirtyNodes = function() {\\n    return this.nodes.filter(function(n) { return n._dirty; });\\n  };\\n\\n  GridStackEngine.prototype.addNode = function(node, triggerAddEvent) {\\n    var prev = {x: node.x, y: node.y, width: node.width, height: node.height};\\n\\n    node = this._prepareNode(node);\\n\\n    if (node.maxWidth !== undefined) { node.width = Math.min(node.width, node.maxWidth); }\\n    if (node.maxHeight !== undefined) { node.height = Math.min(node.height, node.maxHeight); }\\n    if (node.minWidth !== undefined) { node.width = Math.max(node.width, node.minWidth); }\\n    if (node.minHeight !== undefined) { node.height = Math.max(node.height, node.minHeight); }\\n\\n    node._id = node._id || ++idSeq;\\n\\n    if (node.autoPosition) {\\n      this._sortNodes();\\n\\n      for (var i = 0;; ++i) {\\n        var x = i % this.column;\\n        var y = Math.floor(i / this.column);\\n        if (x + node.width > this.column) {\\n          continue;\\n        }\\n        if (!this.nodes.find(Utils._isAddNodeIntercepted, {x: x, y: y, node: node})) {\\n          node.x = x;\\n          node.y = y;\\n          delete node.autoPosition; // found our slot\\n          break;\\n        }\\n      }\\n    }\\n\\n    this.nodes.push(node);\\n    if (triggerAddEvent) {\\n      this._addedNodes.push(node);\\n    }\\n    // use single equal as they come as string/undefined but end as number....\\n    if (!node._dirty && (prev.x != node.x || prev.y != node.y || prev.width != node.width || prev.height != node.height)) {\\n      node._dirty = true;\\n    }\\n\\n    this._fixCollisions(node);\\n    this._packNodes();\\n    this._notify();\\n    return node;\\n  };\\n\\n  GridStackEngine.prototype.removeNode = function(node, detachNode) {\\n    detachNode = (detachNode === undefined ? true : detachNode);\\n    this._removedNodes.push(node);\\n    node._id = null; // hint that node is being removed\\n    this.nodes = Utils.without(this.nodes, node);\\n    this._packNodes();\\n    this._notify(node, detachNode);\\n  };\\n\\n  GridStackEngine.prototype.removeAll = function(detachNode) {\\n    delete this._layouts;\\n    if (this.nodes.length === 0) { return; }\\n    detachNode = (detachNode === undefined ? true : detachNode);\\n    this.nodes.forEach(function(n) { n._id = null; }); // hint that node is being removed\\n    this._removedNodes = this.nodes;\\n    this.nodes = [];\\n    this._notify(this._removedNodes, detachNode);\\n  };\\n\\n  GridStackEngine.prototype.canMoveNode = function(node, x, y, width, height) {\\n    if (!this.isNodeChangedPosition(node, x, y, width, height)) {\\n      return false;\\n    }\\n    var hasLocked = Boolean(this.nodes.find(function(n) { return n.locked; }));\\n\\n    if (!this.maxRow && !hasLocked) {\\n      return true;\\n    }\\n\\n    var clonedNode;\\n    var clone = new GridStackEngine(\\n      this.column,\\n      null,\\n      this.float,\\n      0,\\n      this.nodes.map(function(n) {\\n        if (n === node) {\\n          clonedNode = $.extend({}, n);\\n          return clonedNode;\\n        }\\n        return $.extend({}, n);\\n      }));\\n\\n    if (!clonedNode) {  return true;}\\n\\n    clone.moveNode(clonedNode, x, y, width, height);\\n\\n    var res = true;\\n\\n    if (hasLocked) {\\n      res &= !Boolean(clone.nodes.find(function(n) {\\n        return n !== clonedNode && Boolean(n.locked) && Boolean(n._dirty);\\n      }));\\n    }\\n    if (this.maxRow) {\\n      res &= clone.getGridHeight() <= this.maxRow;\\n    }\\n\\n    return res;\\n  };\\n\\n  GridStackEngine.prototype.canBePlacedWithRespectToHeight = function(node) {\\n    if (!this.maxRow) {\\n      return true;\\n    }\\n\\n    var clone = new GridStackEngine(\\n      this.column,\\n      null,\\n      this.float,\\n      0,\\n      this.nodes.map(function(n) { return $.extend({}, n); }));\\n    clone.addNode(node);\\n    return clone.getGridHeight() <= this.maxRow;\\n  };\\n\\n  GridStackEngine.prototype.isNodeChangedPosition = function(node, x, y, width, height) {\\n    if (typeof x !== 'number') { x = node.x; }\\n    if (typeof y !== 'number') { y = node.y; }\\n    if (typeof width !== 'number') { width = node.width; }\\n    if (typeof height !== 'number') { height = node.height; }\\n\\n    if (node.maxWidth !== undefined) { width = Math.min(width, node.maxWidth); }\\n    if (node.maxHeight !== undefined) { height = Math.min(height, node.maxHeight); }\\n    if (node.minWidth !== undefined) { width = Math.max(width, node.minWidth); }\\n    if (node.minHeight !== undefined) { height = Math.max(height, node.minHeight); }\\n\\n    if (node.x === x && node.y === y && node.width === width && node.height === height) {\\n      return false;\\n    }\\n    return true;\\n  };\\n\\n  GridStackEngine.prototype.moveNode = function(node, x, y, width, height, noPack) {\\n    if (typeof x !== 'number') { x = node.x; }\\n    if (typeof y !== 'number') { y = node.y; }\\n    if (typeof width !== 'number') { width = node.width; }\\n    if (typeof height !== 'number') { height = node.height; }\\n\\n    if (node.maxWidth !== undefined) { width = Math.min(width, node.maxWidth); }\\n    if (node.maxHeight !== undefined) { height = Math.min(height, node.maxHeight); }\\n    if (node.minWidth !== undefined) { width = Math.max(width, node.minWidth); }\\n    if (node.minHeight !== undefined) { height = Math.max(height, node.minHeight); }\\n\\n    if (node.x === x && node.y === y && node.width === width && node.height === height) {\\n      return node;\\n    }\\n\\n    var resizing = node.width !== width;\\n    node._dirty = true;\\n\\n    node.x = x;\\n    node.y = y;\\n    node.width = width;\\n    node.height = height;\\n\\n    node.lastTriedX = x;\\n    node.lastTriedY = y;\\n    node.lastTriedWidth = width;\\n    node.lastTriedHeight = height;\\n\\n    node = this._prepareNode(node, resizing);\\n\\n    this._fixCollisions(node);\\n    if (!noPack) {\\n      this._packNodes();\\n      this._notify();\\n    }\\n    return node;\\n  };\\n\\n  GridStackEngine.prototype.getGridHeight = function() {\\n    return this.nodes.reduce(function(memo, n) { return Math.max(memo, n.y + n.height); }, 0);\\n  };\\n\\n  GridStackEngine.prototype.beginUpdate = function(node) {\\n    if (node._updating) return;\\n    node._updating = true;\\n    this.nodes.forEach(function(n) { n._packY = n.y; });\\n  };\\n\\n  GridStackEngine.prototype.endUpdate = function() {\\n    var n = this.nodes.find(function(n) { return n._updating; });\\n    if (n) {\\n      n._updating = false;\\n      this.nodes.forEach(function(n) { delete n._packY; });\\n    }\\n  };\\n\\n  var GridStack = function(el, opts) {\\n    var self = this;\\n    var oneColumnMode, _prevColumn, isAutoCellHeight;\\n\\n    opts = opts || {};\\n\\n    this.container = $(el);\\n\\n    obsoleteOpts(opts, 'width', 'column', 'v0.5.3');\\n    obsoleteOpts(opts, 'height', 'maxRow', 'v0.5.3');\\n    obsoleteOptsDel(opts, 'oneColumnModeClass', 'v0.6.3', '. Use class `.grid-stack-1` instead');\\n\\n    // container attributes\\n    obsoleteAttr(this.container, 'data-gs-width', 'data-gs-column', 'v0.5.3');\\n    obsoleteAttr(this.container, 'data-gs-height', 'data-gs-max-row', 'v0.5.3');\\n\\n    opts.itemClass = opts.itemClass || 'grid-stack-item';\\n    var isNested = this.container.closest('.' + opts.itemClass).length > 0;\\n\\n    this.opts = Utils.defaults(opts, {\\n      column: parseInt(this.container.attr('data-gs-column')) || 12,\\n      maxRow: parseInt(this.container.attr('data-gs-max-row')) || 0,\\n      itemClass: 'grid-stack-item',\\n      placeholderClass: 'grid-stack-placeholder',\\n      placeholderText: '',\\n      handle: '.grid-stack-item-content',\\n      handleClass: null,\\n      cellHeight: 60,\\n      verticalMargin: 20,\\n      auto: true,\\n      minWidth: 768,\\n      float: false,\\n      staticGrid: false,\\n      _class: 'grid-stack-instance-' + (Math.random() * 10000).toFixed(0),\\n      animate: Boolean(this.container.attr('data-gs-animate')) || false,\\n      alwaysShowResizeHandle: opts.alwaysShowResizeHandle || false,\\n      resizable: Utils.defaults(opts.resizable || {}, {\\n        autoHide: !(opts.alwaysShowResizeHandle || false),\\n        handles: 'se'\\n      }),\\n      draggable: Utils.defaults(opts.draggable || {}, {\\n        handle: (opts.handleClass ? '.' + opts.handleClass : (opts.handle ? opts.handle : '')) ||\\n          '.grid-stack-item-content',\\n        scroll: false,\\n        appendTo: 'body'\\n      }),\\n      disableDrag: opts.disableDrag || false,\\n      disableResize: opts.disableResize || false,\\n      rtl: 'auto',\\n      removable: false,\\n      removableOptions: Utils.defaults(opts.removableOptions || {}, {\\n        accept: '.' + opts.itemClass\\n      }),\\n      removeTimeout: 2000,\\n      verticalMarginUnit: 'px',\\n      cellHeightUnit: 'px',\\n      disableOneColumnMode: opts.disableOneColumnMode || false,\\n      oneColumnModeDomSort: opts.oneColumnModeDomSort,\\n      ddPlugin: null\\n    });\\n\\n    if (this.opts.ddPlugin === false) {\\n      this.opts.ddPlugin = GridStackDragDropPlugin;\\n    } else if (this.opts.ddPlugin === null) {\\n      this.opts.ddPlugin = GridStackDragDropPlugin.registeredPlugins[0] || GridStackDragDropPlugin;\\n    }\\n\\n    this.dd = new this.opts.ddPlugin(this);\\n\\n    if (this.opts.rtl === 'auto') {\\n      this.opts.rtl = this.container.css('direction') === 'rtl';\\n    }\\n\\n    if (this.opts.rtl) {\\n      this.container.addClass('grid-stack-rtl');\\n    }\\n\\n    this.opts.isNested = isNested;\\n\\n    isAutoCellHeight = (this.opts.cellHeight === 'auto');\\n    if (isAutoCellHeight) {\\n      // make the cell square initially\\n      self.cellHeight(self.cellWidth(), true);\\n    } else {\\n      this.cellHeight(this.opts.cellHeight, true);\\n    }\\n    this.verticalMargin(this.opts.verticalMargin, true);\\n\\n    this.container.addClass(this.opts._class);\\n\\n    this._setStaticClass();\\n\\n    if (isNested) {\\n      this.container.addClass('grid-stack-nested');\\n    }\\n\\n    this._initStyles();\\n\\n    this.grid = new GridStackEngine(this.opts.column, function(nodes, detachNode) {\\n      detachNode = (detachNode === undefined ? true : detachNode);\\n      var maxHeight = 0;\\n      this.nodes.forEach(function(n) {\\n        maxHeight = Math.max(maxHeight, n.y + n.height);\\n      });\\n      nodes.forEach(function(n) {\\n        if (detachNode && n._id === null) {\\n          if (n.el) {\\n            n.el.remove();\\n          }\\n        } else {\\n          n.el\\n            .attr('data-gs-x', n.x)\\n            .attr('data-gs-y', n.y)\\n            .attr('data-gs-width', n.width)\\n            .attr('data-gs-height', n.height);\\n        }\\n      });\\n      self._updateStyles(maxHeight + 10);\\n    }, this.opts.float, this.opts.maxRow);\\n\\n    if (this.opts.auto) {\\n      var elements = [];\\n      var _this = this;\\n      this.container.children('.' + this.opts.itemClass + ':not(.' + this.opts.placeholderClass + ')')\\n        .each(function(index, el) {\\n          el = $(el);\\n          var x = parseInt(el.attr('data-gs-x'));\\n          var y = parseInt(el.attr('data-gs-y'));\\n          elements.push({\\n            el: el,\\n            // if x,y are missing (autoPosition) add them to end of list - but keep their respective DOM order\\n            i: (Number.isNaN(x) ? 1000 : x) + (Number.isNaN(y) ? 1000 : y) * _this.opts.column\\n          });\\n        });\\n      Utils.sortBy(elements, function(x) { return x.i; }).forEach(function(item) {\\n        this._prepareElement(item.el);\\n      }, this);\\n    }\\n\\n    this.setAnimation(this.opts.animate);\\n\\n    this.placeholder = $(\\n      '<div class=\\\"' + this.opts.placeholderClass + ' ' + this.opts.itemClass + '\\\">' +\\n      '<div class=\\\"placeholder-content\\\">' + this.opts.placeholderText + '</div></div>').hide();\\n\\n    this._updateContainerHeight();\\n\\n    this._updateHeightsOnResize = Utils.throttle(function() {\\n      self.cellHeight(self.cellWidth(), false);\\n    }, 100);\\n\\n    /**\\n     * called when we are being resized - check if the one Column Mode needs to be turned on/off\\n     * and remember the prev columns we used.\\n     */\\n    this.onResizeHandler = function() {\\n      if (isAutoCellHeight) {\\n        self._updateHeightsOnResize();\\n      }\\n\\n      if (self.opts.staticGrid) { return; }\\n\\n      if (!self.opts.disableOneColumnMode && (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) <= self.opts.minWidth) {\\n        if (self.oneColumnMode) {  return; }\\n        self.oneColumnMode = true;\\n        self.setColumn(1);\\n      } else {\\n        if (!self.oneColumnMode) { return; }\\n        self.oneColumnMode = false;\\n        self.setColumn(self._prevColumn);\\n      }\\n    };\\n\\n    $(window).resize(this.onResizeHandler);\\n    this.onResizeHandler();\\n\\n    if (!self.opts.staticGrid && typeof self.opts.removable === 'string') {\\n      var trashZone = $(self.opts.removable);\\n      if (!this.dd.isDroppable(trashZone)) {\\n        this.dd.droppable(trashZone, self.opts.removableOptions);\\n      }\\n      this.dd\\n        .on(trashZone, 'dropover', function(event, ui) {\\n          var el = $(ui.draggable);\\n          var node = el.data('_gridstack_node');\\n          if (!node || node._grid !== self) {\\n            return;\\n          }\\n          el.data('inTrashZone', true);\\n          self._setupRemovingTimeout(el);\\n        })\\n        .on(trashZone, 'dropout', function(event, ui) {\\n          var el = $(ui.draggable);\\n          var node = el.data('_gridstack_node');\\n          if (!node || node._grid !== self) {\\n            return;\\n          }\\n          el.data('inTrashZone', false);\\n          self._clearRemovingTimeout(el);\\n        });\\n    }\\n\\n    if (!self.opts.staticGrid && self.opts.acceptWidgets) {\\n      var draggingElement = null;\\n\\n      var onDrag = function(event, ui) {\\n        var el = draggingElement;\\n        var node = el.data('_gridstack_node');\\n        var pos = self.getCellFromPixel({left: event.pageX, top: event.pageY}, true);\\n        var x = Math.max(0, pos.x);\\n        var y = Math.max(0, pos.y);\\n        if (!node._added) {\\n          node._added = true;\\n\\n          node.el = el;\\n          node.autoPosition = true;\\n          node.x = x;\\n          node.y = y;\\n          self.grid.cleanNodes();\\n          self.grid.beginUpdate(node);\\n          self.grid.addNode(node);\\n\\n          self.container.append(self.placeholder);\\n          self.placeholder\\n            .attr('data-gs-x', node.x)\\n            .attr('data-gs-y', node.y)\\n            .attr('data-gs-width', node.width)\\n            .attr('data-gs-height', node.height)\\n            .show();\\n          node.el = self.placeholder;\\n          node._beforeDragX = node.x;\\n          node._beforeDragY = node.y;\\n\\n          self._updateContainerHeight();\\n        }\\n        if (!self.grid.canMoveNode(node, x, y)) {\\n          return;\\n        }\\n        self.grid.moveNode(node, x, y);\\n        self._updateContainerHeight();\\n      };\\n\\n      this.dd\\n        .droppable(self.container, {\\n          accept: function(el) {\\n            el = $(el);\\n            var node = el.data('_gridstack_node');\\n            if (node && node._grid === self) {\\n              return false;\\n            }\\n            return el.is(self.opts.acceptWidgets === true ? '.grid-stack-item' : self.opts.acceptWidgets);\\n          }\\n        })\\n        .on(self.container, 'dropover', function(event, ui) {\\n          var el = $(ui.draggable);\\n          var width, height;\\n\\n          // see if we already have a node with widget/height and check for attributes\\n          var origNode = el.data('_gridstack_node');\\n          if (!origNode || !origNode.width || !origNode.height) {\\n            var w = parseInt(el.attr('data-gs-width'));\\n            if (w > 0) { origNode = origNode || {}; origNode.width = w; }\\n            var h = parseInt(el.attr('data-gs-height'));\\n            if (h > 0) { origNode = origNode || {}; origNode.height = h; }\\n          }\\n\\n          // if not calculate the grid size based on element outer size\\n          // height: Each row is cellHeight + verticalMargin, until last one which has no margin below\\n          var cellWidth = self.cellWidth();\\n          var cellHeight = self.cellHeight();\\n          var verticalMargin = self.opts.verticalMargin;\\n          width = origNode && origNode.width ? origNode.width : Math.ceil(el.outerWidth() / cellWidth);\\n          height = origNode && origNode.height ? origNode.height : Math.round((el.outerHeight() + verticalMargin) / (cellHeight + verticalMargin));\\n\\n          draggingElement = el;\\n\\n          var node = self.grid._prepareNode({width: width, height: height, _added: false, _temporary: true});\\n          node.isOutOfGrid = true;\\n          el.data('_gridstack_node', node);\\n          el.data('_gridstack_node_orig', origNode);\\n\\n          el.on('drag', onDrag);\\n        })\\n        .on(self.container, 'dropout', function(event, ui) {\\n          // jquery-ui bug. Must verify widget is being dropped out\\n          // check node variable that gets set when widget is out of grid\\n          var el = $(ui.draggable);\\n          if (!el.data('_gridstack_node')) {\\n            return;\\n          }\\n          var node = el.data('_gridstack_node');\\n          if (!node.isOutOfGrid) {\\n            return;\\n          }\\n          el.unbind('drag', onDrag);\\n          node.el = null;\\n          self.grid.removeNode(node);\\n          self.placeholder.detach();\\n          self._updateContainerHeight();\\n          el.data('_gridstack_node', el.data('_gridstack_node_orig'));\\n        })\\n        .on(self.container, 'drop', function(event, ui) {\\n          self.placeholder.detach();\\n\\n          var node = $(ui.draggable).data('_gridstack_node');\\n          node.isOutOfGrid = false;\\n          node._grid = self;\\n          var el = $(ui.draggable).clone(false);\\n          el.data('_gridstack_node', node);\\n          var originalNode = $(ui.draggable).data('_gridstack_node_orig');\\n          if (originalNode !== undefined && originalNode._grid !== undefined) {\\n            originalNode._grid._triggerRemoveEvent();\\n          }\\n          $(ui.helper).remove();\\n          node.el = el;\\n          self.placeholder.hide();\\n          Utils.removePositioningStyles(el);\\n          el.find('div.ui-resizable-handle').remove();\\n\\n          el\\n            .attr('data-gs-x', node.x)\\n            .attr('data-gs-y', node.y)\\n            .attr('data-gs-width', node.width)\\n            .attr('data-gs-height', node.height)\\n            .addClass(self.opts.itemClass)\\n            .enableSelection()\\n            .removeData('draggable')\\n            .removeClass('ui-draggable ui-draggable-dragging ui-draggable-disabled')\\n            .unbind('drag', onDrag);\\n          self.container.append(el);\\n          self._prepareElementsByNode(el, node);\\n          self._updateContainerHeight();\\n          self.grid._addedNodes.push(node);\\n          self._triggerAddEvent();\\n          self._triggerChangeEvent();\\n\\n          self.grid.endUpdate();\\n          $(ui.draggable).unbind('drag', onDrag);\\n          $(ui.draggable).removeData('_gridstack_node');\\n          $(ui.draggable).removeData('_gridstack_node_orig');\\n          self.container.trigger('dropped', [originalNode, node]);\\n        });\\n    }\\n  };\\n\\n  GridStack.prototype._triggerChangeEvent = function(/*forceTrigger*/) {\\n    if (this.grid._batchMode) { return; }\\n    // TODO: compare original X,Y,W,H (or entire node?) instead as _dirty can be a temporary state\\n    var elements = this.grid.getDirtyNodes();\\n    if (elements && elements.length) {\\n      this.grid._layoutsNodesChange(elements);\\n      this.container.trigger('change', [elements]);\\n      this.grid.cleanNodes(); // clear dirty flags now that we called\\n    }\\n  };\\n\\n  GridStack.prototype._triggerAddEvent = function() {\\n    if (this.grid._batchMode) { return; }\\n    if (this.grid._addedNodes && this.grid._addedNodes.length > 0) {\\n      this.grid._layoutsNodesChange(this.grid._addedNodes);\\n      this.container.trigger('added', [this.grid._addedNodes]);\\n      this.grid._addedNodes = [];\\n    }\\n  };\\n\\n  GridStack.prototype._triggerRemoveEvent = function() {\\n    if (this.grid._batchMode) { return; }\\n    if (this.grid._removedNodes && this.grid._removedNodes.length > 0) {\\n      this.container.trigger('removed', [this.grid._removedNodes]);\\n      this.grid._removedNodes = [];\\n    }\\n  };\\n\\n  GridStack.prototype._initStyles = function() {\\n    if (this._stylesId) {\\n      Utils.removeStylesheet(this._stylesId);\\n    }\\n    this._stylesId = 'gridstack-style-' + (Math.random() * 100000).toFixed();\\n    this._styles = Utils.createStylesheet(this._stylesId);\\n    if (this._styles !== null) {\\n      this._styles._max = 0;\\n    }\\n  };\\n\\n  GridStack.prototype._updateStyles = function(maxHeight) {\\n    if (this._styles === null || this._styles === undefined) {\\n      return;\\n    }\\n\\n    var prefix = '.' + this.opts._class + ' .' + this.opts.itemClass;\\n    var self = this;\\n    var getHeight;\\n\\n    if (maxHeight === undefined) {\\n      maxHeight = this._styles._max;\\n    }\\n\\n    this._initStyles();\\n    this._updateContainerHeight();\\n    if (!this.opts.cellHeight) { // The rest will be handled by CSS\\n      return ;\\n    }\\n    if (this._styles._max !== 0 && maxHeight <= this._styles._max) { // Keep this._styles._max increasing\\n      return ;\\n    }\\n\\n    if (!this.opts.verticalMargin || this.opts.cellHeightUnit === this.opts.verticalMarginUnit) {\\n      getHeight = function(nbRows, nbMargins) {\\n        return (self.opts.cellHeight * nbRows + self.opts.verticalMargin * nbMargins) +\\n          self.opts.cellHeightUnit;\\n      };\\n    } else {\\n      getHeight = function(nbRows, nbMargins) {\\n        if (!nbRows || !nbMargins) {\\n          return (self.opts.cellHeight * nbRows + self.opts.verticalMargin * nbMargins) +\\n            self.opts.cellHeightUnit;\\n        }\\n        return 'calc(' + ((self.opts.cellHeight * nbRows) + self.opts.cellHeightUnit) + ' + ' +\\n          ((self.opts.verticalMargin * nbMargins) + self.opts.verticalMarginUnit) + ')';\\n      };\\n    }\\n\\n    if (this._styles._max === 0) {\\n      Utils.insertCSSRule(this._styles, prefix, 'min-height: ' + getHeight(1, 0) + ';', 0);\\n    }\\n\\n    if (maxHeight > this._styles._max) {\\n      for (var i = this._styles._max; i < maxHeight; ++i) {\\n        Utils.insertCSSRule(this._styles,\\n          prefix + '[data-gs-height=\\\"' + (i + 1) + '\\\"]',\\n          'height: ' + getHeight(i + 1, i) + ';',\\n          i\\n        );\\n        Utils.insertCSSRule(this._styles,\\n          prefix + '[data-gs-min-height=\\\"' + (i + 1) + '\\\"]',\\n          'min-height: ' + getHeight(i + 1, i) + ';',\\n          i\\n        );\\n        Utils.insertCSSRule(this._styles,\\n          prefix + '[data-gs-max-height=\\\"' + (i + 1) + '\\\"]',\\n          'max-height: ' + getHeight(i + 1, i) + ';',\\n          i\\n        );\\n        Utils.insertCSSRule(this._styles,\\n          prefix + '[data-gs-y=\\\"' + i + '\\\"]',\\n          'top: ' + getHeight(i, i) + ';',\\n          i\\n        );\\n      }\\n      this._styles._max = maxHeight;\\n    }\\n  };\\n\\n  GridStack.prototype._updateContainerHeight = function() {\\n    if (this.grid._batchMode) { return; }\\n    var height = this.grid.getGridHeight();\\n    // check for css min height. Each row is cellHeight + verticalMargin, until last one which has no margin below\\n    var cssMinHeight = parseInt(this.container.css('min-height'));\\n    if (cssMinHeight > 0) {\\n      var verticalMargin = this.opts.verticalMargin;\\n      var minHeight =  Math.round((cssMinHeight + verticalMargin) / (this.cellHeight() + verticalMargin));\\n      if (height < minHeight) {\\n        height = minHeight;\\n      }\\n    }\\n    this.container.attr('data-gs-current-height', height);\\n    if (!this.opts.cellHeight) {\\n      return ;\\n    }\\n    if (!this.opts.verticalMargin) {\\n      this.container.css('height', (height * (this.opts.cellHeight)) + this.opts.cellHeightUnit);\\n    } else if (this.opts.cellHeightUnit === this.opts.verticalMarginUnit) {\\n      this.container.css('height', (height * (this.opts.cellHeight + this.opts.verticalMargin) -\\n        this.opts.verticalMargin) + this.opts.cellHeightUnit);\\n    } else {\\n      this.container.css('height', 'calc(' + ((height * (this.opts.cellHeight)) + this.opts.cellHeightUnit) +\\n        ' + ' + ((height * (this.opts.verticalMargin - 1)) + this.opts.verticalMarginUnit) + ')');\\n    }\\n  };\\n\\n  GridStack.prototype._setupRemovingTimeout = function(el) {\\n    var self = this;\\n    var node = $(el).data('_gridstack_node');\\n\\n    if (node._removeTimeout || !self.opts.removable) {\\n      return;\\n    }\\n    node._removeTimeout = setTimeout(function() {\\n      el.addClass('grid-stack-item-removing');\\n      node._isAboutToRemove = true;\\n    }, self.opts.removeTimeout);\\n  };\\n\\n  GridStack.prototype._clearRemovingTimeout = function(el) {\\n    var node = $(el).data('_gridstack_node');\\n\\n    if (!node._removeTimeout) {\\n      return;\\n    }\\n    clearTimeout(node._removeTimeout);\\n    node._removeTimeout = null;\\n    el.removeClass('grid-stack-item-removing');\\n    node._isAboutToRemove = false;\\n  };\\n\\n  GridStack.prototype._prepareElementsByNode = function(el, node) {\\n    var self = this;\\n\\n    var cellWidth;\\n    var cellHeight;\\n\\n    var dragOrResize = function(event, ui) {\\n      var x = Math.round(ui.position.left / cellWidth);\\n      var y = Math.floor((ui.position.top + cellHeight / 2) / cellHeight);\\n      var width;\\n      var height;\\n\\n      if (event.type !== 'drag') {\\n        width = Math.round(ui.size.width / cellWidth);\\n        height = Math.round(ui.size.height / cellHeight);\\n      }\\n\\n      if (event.type === 'drag') {\\n        var distance = ui.position.top - node._prevYPix;\\n        node._prevYPix = ui.position.top;\\n        Utils.updateScrollPosition(el[0], ui, distance);\\n        if (el.data('inTrashZone') || x < 0 || x >= self.grid.column || y < 0 ||\\n          (!self.grid.float && y > self.grid.getGridHeight())) {\\n          if (!node._temporaryRemoved) {\\n            if (self.opts.removable === true) {\\n              self._setupRemovingTimeout(el);\\n            }\\n\\n            x = node._beforeDragX;\\n            y = node._beforeDragY;\\n\\n            self.placeholder.detach();\\n            self.placeholder.hide();\\n            self.grid.removeNode(node);\\n            self._updateContainerHeight();\\n\\n            node._temporaryRemoved = true;\\n          } else {\\n            return;\\n          }\\n        } else {\\n          self._clearRemovingTimeout(el);\\n\\n          if (node._temporaryRemoved) {\\n            self.grid.addNode(node);\\n            self.placeholder\\n              .attr('data-gs-x', x)\\n              .attr('data-gs-y', y)\\n              .attr('data-gs-width', width)\\n              .attr('data-gs-height', height)\\n              .show();\\n            self.container.append(self.placeholder);\\n            node.el = self.placeholder;\\n            node._temporaryRemoved = false;\\n          }\\n        }\\n      } else if (event.type === 'resize')  {\\n        if (x < 0) {\\n          return;\\n        }\\n      }\\n      // width and height are undefined if not resizing\\n      var lastTriedWidth = width !== undefined ? width : node.lastTriedWidth;\\n      var lastTriedHeight = height !== undefined ? height : node.lastTriedHeight;\\n      if (!self.grid.canMoveNode(node, x, y, width, height) ||\\n        (node.lastTriedX === x && node.lastTriedY === y &&\\n        node.lastTriedWidth === lastTriedWidth && node.lastTriedHeight === lastTriedHeight)) {\\n        return;\\n      }\\n      node.lastTriedX = x;\\n      node.lastTriedY = y;\\n      node.lastTriedWidth = width;\\n      node.lastTriedHeight = height;\\n      self.grid.moveNode(node, x, y, width, height);\\n      self._updateContainerHeight();\\n\\n      if (event.type === 'resize')  {\\n        $(event.target).trigger('gsresize', node);\\n      }\\n    };\\n\\n    var onStartMoving = function(event, ui) {\\n      self.container.append(self.placeholder);\\n      var o = $(this);\\n      self.grid.cleanNodes();\\n      self.grid.beginUpdate(node);\\n      cellWidth = self.cellWidth();\\n      var strictCellHeight = self.cellHeight();\\n      // TODO: cellHeight = cellHeight() causes issue (i.e. remove strictCellHeight above) otherwise\\n      // when sizing up we jump almost right away to next size instead of half way there. Not sure\\n      // why as we don't use ceil() in many places but round() instead.\\n      cellHeight = self.container.height() / parseInt(self.container.attr('data-gs-current-height'));\\n      self.placeholder\\n        .attr('data-gs-x', o.attr('data-gs-x'))\\n        .attr('data-gs-y', o.attr('data-gs-y'))\\n        .attr('data-gs-width', o.attr('data-gs-width'))\\n        .attr('data-gs-height', o.attr('data-gs-height'))\\n        .show();\\n      node.el = self.placeholder;\\n      node._beforeDragX = node.x;\\n      node._beforeDragY = node.y;\\n      node._prevYPix = ui.position.top;\\n      var minHeight = (node.minHeight || 1);\\n      var verticalMargin = self.opts.verticalMargin;\\n\\n      // mineHeight - Each row is cellHeight + verticalMargin, until last one which has no margin below\\n      self.dd.resizable(el, 'option', 'minWidth', cellWidth * (node.minWidth || 1));\\n      self.dd.resizable(el, 'option', 'minHeight', (strictCellHeight * minHeight) + (minHeight - 1) * verticalMargin);\\n\\n      if (event.type === 'resizestart') {\\n        o.find('.grid-stack-item').trigger('resizestart');\\n      }\\n    };\\n\\n    var onEndMoving = function(event, ui) {\\n      var o = $(this);\\n      if (!o.data('_gridstack_node')) {\\n        return;\\n      }\\n\\n      // var forceNotify = false; what is the point of calling 'change' event with no data, when the 'removed' event is already called ?\\n      self.placeholder.detach();\\n      node.el = o;\\n      self.placeholder.hide();\\n\\n      if (node._isAboutToRemove) {\\n        // forceNotify = true;\\n        var gridToNotify = el.data('_gridstack_node')._grid;\\n        gridToNotify._triggerRemoveEvent();\\n        el.removeData('_gridstack_node');\\n        el.remove();\\n      } else {\\n        self._clearRemovingTimeout(el);\\n        if (!node._temporaryRemoved) {\\n          Utils.removePositioningStyles(o);\\n          o\\n            .attr('data-gs-x', node.x)\\n            .attr('data-gs-y', node.y)\\n            .attr('data-gs-width', node.width)\\n            .attr('data-gs-height', node.height);\\n        } else {\\n          Utils.removePositioningStyles(o);\\n          o\\n            .attr('data-gs-x', node._beforeDragX)\\n            .attr('data-gs-y', node._beforeDragY)\\n            .attr('data-gs-width', node.width)\\n            .attr('data-gs-height', node.height);\\n          node.x = node._beforeDragX;\\n          node.y = node._beforeDragY;\\n          node._temporaryRemoved = false;\\n          self.grid.addNode(node);\\n        }\\n      }\\n      self._updateContainerHeight();\\n      self._triggerChangeEvent(/*forceNotify*/);\\n\\n      self.grid.endUpdate();\\n\\n      var nestedGrids = o.find('.grid-stack');\\n      if (nestedGrids.length && event.type === 'resizestop') {\\n        nestedGrids.each(function(index, el) {\\n          $(el).data('gridstack').onResizeHandler();\\n        });\\n        o.find('.grid-stack-item').trigger('resizestop');\\n        o.find('.grid-stack-item').trigger('gsresizestop');\\n      }\\n      if (event.type === 'resizestop') {\\n        self.container.trigger('gsresizestop', o);\\n      }\\n    };\\n\\n    this.dd\\n      .draggable(el, {\\n        start: onStartMoving,\\n        stop: onEndMoving,\\n        drag: dragOrResize\\n      })\\n      .resizable(el, {\\n        start: onStartMoving,\\n        stop: onEndMoving,\\n        resize: dragOrResize\\n      });\\n\\n    if (node.noMove || this.opts.disableDrag || this.opts.staticGrid) {\\n      this.dd.draggable(el, 'disable');\\n    }\\n\\n    if (node.noResize || this.opts.disableResize || this.opts.staticGrid) {\\n      this.dd.resizable(el, 'disable');\\n    }\\n\\n    this._writeAttr(el, node);\\n  };\\n\\n  GridStack.prototype._prepareElement = function(el, triggerAddEvent) {\\n    triggerAddEvent = triggerAddEvent !== undefined ? triggerAddEvent : false;\\n    var self = this;\\n    el = $(el);\\n\\n    el.addClass(this.opts.itemClass);\\n    var node = this._readAttr(el, {el: el, _grid: self});\\n    node = self.grid.addNode(node, triggerAddEvent);\\n    el.data('_gridstack_node', node);\\n\\n    this._prepareElementsByNode(el, node);\\n  };\\n\\n  /** call to write any default attributes back to element */\\n  GridStack.prototype._writeAttr = function(el, node) {\\n    el = $(el);\\n    node = node || {};\\n    // Note: passing null removes the attr in jquery\\n    if (node.x !== undefined) { el.attr('data-gs-x', node.x); }\\n    if (node.y !== undefined) { el.attr('data-gs-y', node.y); }\\n    if (node.width !== undefined) { el.attr('data-gs-width', node.width); }\\n    if (node.height !== undefined) { el.attr('data-gs-height', node.height); }\\n    if (node.autoPosition !== undefined) { el.attr('data-gs-auto-position', node.autoPosition ? true : null); }\\n    if (node.minWidth !== undefined) { el.attr('data-gs-min-width', node.minWidth); }\\n    if (node.maxWidth !== undefined) { el.attr('data-gs-max-width', node.maxWidth); }\\n    if (node.minHeight !== undefined) { el.attr('data-gs-min-height', node.minHeight); }\\n    if (node.maxHeight !== undefined) { el.attr('data-gs-max-height', node.maxHeight); }\\n    if (node.noResize !== undefined) { el.attr('data-gs-no-resize', node.noResize ? true : null); }\\n    if (node.noMove !== undefined) { el.attr('data-gs-no-move', node.noMove ? true : null); }\\n    if (node.locked !== undefined) { el.attr('data-gs-locked', node.locked ? true : null); }\\n    if (node.resizeHandles !== undefined) { el.attr('data-gs-resize-handles', node.resizeHandles); }\\n    if (node.id !== undefined) { el.attr('data-gs-id', node.id); }\\n  };\\n\\n  /** call to write any default attributes back to element */\\n  GridStack.prototype._readAttr = function(el, node) {\\n    el = $(el);\\n    node = node || {};\\n    node.x = el.attr('data-gs-x');\\n    node.y = el.attr('data-gs-y');\\n    node.width = el.attr('data-gs-width');\\n    node.height = el.attr('data-gs-height');\\n    node.autoPosition = Utils.toBool(el.attr('data-gs-auto-position'));\\n    node.maxWidth = el.attr('data-gs-max-width');\\n    node.minWidth = el.attr('data-gs-min-width');\\n    node.maxHeight = el.attr('data-gs-max-height');\\n    node.minHeight = el.attr('data-gs-min-height');\\n    node.noResize = Utils.toBool(el.attr('data-gs-no-resize'));\\n    node.noMove = Utils.toBool(el.attr('data-gs-no-move'));\\n    node.locked = Utils.toBool(el.attr('data-gs-locked'));\\n    node.resizeHandles = el.attr('data-gs-resize-handles');\\n    node.id = el.attr('data-gs-id');\\n    return node;\\n  };\\n\\n  GridStack.prototype.setAnimation = function(enable) {\\n    if (enable) {\\n      this.container.addClass('grid-stack-animate');\\n    } else {\\n      this.container.removeClass('grid-stack-animate');\\n    }\\n  };\\n\\n  GridStack.prototype.addWidget = function(el, node, y, width, height, autoPosition, minWidth, maxWidth, minHeight, maxHeight, id) {\\n\\n    // new way of calling with an object - make sure all items have been properly initialized\\n    if (node === undefined || typeof node === 'object') {\\n      // Tempting to initialize the passed in node with default and valid values, but this break knockout demos\\n      // as the actual value are filled in when _prepareElement() calls el.attr('data-gs-xyz) before adding the node.\\n      // node = this.grid._prepareNode(node);\\n      node = node || {};\\n    } else {\\n      // old legacy way of calling with items spelled out - call us back with single object instead (so we can properly initialized values)\\n      return this.addWidget(el, {x: node, y: y, width: width, height: height, autoPosition: autoPosition,\\n        minWidth: minWidth, maxWidth: maxWidth, minHeight: minHeight, maxHeight: maxHeight, id: id});\\n    }\\n\\n    el = $(el);\\n    this._writeAttr(el, node);\\n    this.container.append(el);\\n    this._prepareElement(el, true);\\n    this._updateContainerHeight();\\n    this._triggerAddEvent();\\n    // this._triggerChangeEvent(true); already have AddEvent\\n\\n    return el;\\n  };\\n\\n  GridStack.prototype.makeWidget = function(el) {\\n    el = $(el);\\n    this._prepareElement(el, true);\\n    this._updateContainerHeight();\\n    this._triggerAddEvent();\\n    // this._triggerChangeEvent(true); already have AddEvent\\n\\n    return el;\\n  };\\n\\n  GridStack.prototype.willItFit = function(x, y, width, height, autoPosition) {\\n    var node = {x: x, y: y, width: width, height: height, autoPosition: autoPosition};\\n    return this.grid.canBePlacedWithRespectToHeight(node);\\n  };\\n\\n  GridStack.prototype.removeWidget = function(el, detachNode) {\\n    detachNode = (detachNode === undefined ? true : detachNode);\\n    el = $(el);\\n    var node = el.data('_gridstack_node');\\n    // For Meteor support: https://github.com/gridstack/gridstack.js/pull/272\\n    if (!node) {\\n      node = this.grid.getNodeDataByDOMEl(el);\\n    }\\n\\n    el.removeData('_gridstack_node');\\n    this.grid.removeNode(node, detachNode);\\n    this._triggerRemoveEvent();\\n    // this._triggerChangeEvent(true); already have removeEvent\\n  };\\n\\n  GridStack.prototype.removeAll = function(detachNode) {\\n    if (detachNode !== false) {\\n      // remove our data structure before list gets emptied and DOM elements stay behind\\n      this.grid.nodes.forEach(function(node) { node.el.removeData('_gridstack_node') });\\n    }\\n    this.grid.removeAll(detachNode);\\n    this._triggerRemoveEvent();\\n  };\\n\\n  GridStack.prototype.destroy = function(detachGrid) {\\n    $(window).off('resize', this.onResizeHandler);\\n    this.disable();\\n    if (detachGrid !== undefined && !detachGrid) {\\n      this.removeAll(false);\\n      this.container.removeData('gridstack');\\n    } else {\\n      this.container.remove();\\n    }\\n    Utils.removeStylesheet(this._stylesId);\\n    if (this.grid) {\\n      this.grid = null;\\n    }\\n  };\\n\\n  GridStack.prototype.resizable = function(el, val) {\\n    var self = this;\\n    el = $(el);\\n    el.each(function(index, el) {\\n      el = $(el);\\n      var node = el.data('_gridstack_node');\\n      if (!node) { return; }\\n      node.noResize = !(val || false);\\n      if (node.noResize) {\\n        self.dd.resizable(el, 'disable');\\n      } else {\\n        self.dd.resizable(el, 'enable');\\n      }\\n    });\\n    return this;\\n  };\\n\\n  GridStack.prototype.movable = function(el, val) {\\n    var self = this;\\n    el = $(el);\\n    el.each(function(index, el) {\\n      el = $(el);\\n      var node = el.data('_gridstack_node');\\n      if (!node) { return; }\\n      node.noMove = !(val || false);\\n      if (node.noMove) {\\n        self.dd.draggable(el, 'disable');\\n        el.removeClass('ui-draggable-handle');\\n      } else {\\n        self.dd.draggable(el, 'enable');\\n        el.addClass('ui-draggable-handle');\\n      }\\n    });\\n    return this;\\n  };\\n\\n  GridStack.prototype.enableMove = function(doEnable, includeNewWidgets) {\\n    this.movable(this.container.children('.' + this.opts.itemClass), doEnable);\\n    if (includeNewWidgets) {\\n      this.opts.disableDrag = !doEnable;\\n    }\\n  };\\n\\n  GridStack.prototype.enableResize = function(doEnable, includeNewWidgets) {\\n    this.resizable(this.container.children('.' + this.opts.itemClass), doEnable);\\n    if (includeNewWidgets) {\\n      this.opts.disableResize = !doEnable;\\n    }\\n  };\\n\\n  GridStack.prototype.disable = function() {\\n    this.movable(this.container.children('.' + this.opts.itemClass), false);\\n    this.resizable(this.container.children('.' + this.opts.itemClass), false);\\n    this.container.trigger('disable');\\n  };\\n\\n  GridStack.prototype.enable = function() {\\n    this.movable(this.container.children('.' + this.opts.itemClass), true);\\n    this.resizable(this.container.children('.' + this.opts.itemClass), true);\\n    this.container.trigger('enable');\\n  };\\n\\n  GridStack.prototype.locked = function(el, val) {\\n    el = $(el);\\n    el.each(function(index, el) {\\n      el = $(el);\\n      var node = el.data('_gridstack_node');\\n      if (!node) { return; }\\n      node.locked = (val || false);\\n      el.attr('data-gs-locked', node.locked ? 'yes' : null);\\n    });\\n    return this;\\n  };\\n\\n  GridStack.prototype.maxHeight = function(el, val) {\\n    el = $(el);\\n    el.each(function(index, el) {\\n      el = $(el);\\n      var node = el.data('_gridstack_node');\\n      if (!node) { return; }\\n      if (!isNaN(val)) {\\n        node.maxHeight = (val || false);\\n        el.attr('data-gs-max-height', val);\\n      }\\n    });\\n    return this;\\n  };\\n\\n  GridStack.prototype.minHeight = function(el, val) {\\n    el = $(el);\\n    el.each(function(index, el) {\\n      el = $(el);\\n      var node = el.data('_gridstack_node');\\n      if (!node) { return; }\\n      if (!isNaN(val)) {\\n        node.minHeight = (val || false);\\n        el.attr('data-gs-min-height', val);\\n      }\\n    });\\n    return this;\\n  };\\n\\n  GridStack.prototype.maxWidth = function(el, val) {\\n    el = $(el);\\n    el.each(function(index, el) {\\n      el = $(el);\\n      var node = el.data('_gridstack_node');\\n      if (!node) { return; }\\n      if (!isNaN(val)) {\\n        node.maxWidth = (val || false);\\n        el.attr('data-gs-max-width', val);\\n      }\\n    });\\n    return this;\\n  };\\n\\n  GridStack.prototype.minWidth = function(el, val) {\\n    el = $(el);\\n    el.each(function(index, el) {\\n      el = $(el);\\n      var node = el.data('_gridstack_node');\\n      if (!node) { return; }\\n      if (!isNaN(val)) {\\n        node.minWidth = (val || false);\\n        el.attr('data-gs-min-width', val);\\n      }\\n    });\\n    return this;\\n  };\\n\\n  GridStack.prototype._updateElement = function(el, callback) {\\n    el = $(el).first();\\n    var node = el.data('_gridstack_node');\\n    if (!node) { return; }\\n    var self = this;\\n\\n    self.grid.cleanNodes();\\n    self.grid.beginUpdate(node);\\n\\n    callback.call(this, el, node);\\n\\n    self._updateContainerHeight();\\n    self._triggerChangeEvent();\\n\\n    self.grid.endUpdate();\\n  };\\n\\n  GridStack.prototype.resize = function(el, width, height) {\\n    this._updateElement(el, function(el, node) {\\n      width = (width !== null && width !== undefined) ? width : node.width;\\n      height = (height !== null && height !== undefined) ? height : node.height;\\n\\n      this.grid.moveNode(node, node.x, node.y, width, height);\\n    });\\n  };\\n\\n  GridStack.prototype.move = function(el, x, y) {\\n    this._updateElement(el, function(el, node) {\\n      x = (x !== null && x !== undefined) ? x : node.x;\\n      y = (y !== null && y !== undefined) ? y : node.y;\\n\\n      this.grid.moveNode(node, x, y, node.width, node.height);\\n    });\\n  };\\n\\n  GridStack.prototype.update = function(el, x, y, width, height) {\\n    this._updateElement(el, function(el, node) {\\n      x = (x !== null && x !== undefined) ? x : node.x;\\n      y = (y !== null && y !== undefined) ? y : node.y;\\n      width = (width !== null && width !== undefined) ? width : node.width;\\n      height = (height !== null && height !== undefined) ? height : node.height;\\n\\n      this.grid.moveNode(node, x, y, width, height);\\n    });\\n  };\\n\\n  /**\\n   * relayout grid items to reclaim any empty space\\n   */\\n  GridStack.prototype.compact = function() {\\n    if (this.grid.nodes.length === 0) { return; }\\n    this.batchUpdate();\\n    this.grid._sortNodes();\\n    var nodes = this.grid.nodes;\\n    this.grid.nodes = []; // pretend we have no nodes to conflict layout to start with...\\n    nodes.forEach(function(n) {\\n      if (!n.noMove && !n.locked) {\\n        n.autoPosition = true;\\n      }\\n      this.grid.addNode(n, false); // 'false' for add event trigger\\n    }, this);\\n    this.commit();\\n  };\\n\\n  GridStack.prototype.verticalMargin = function(val, noUpdate) {\\n    if (val === undefined) {\\n      return this.opts.verticalMargin;\\n    }\\n\\n    var heightData = Utils.parseHeight(val);\\n\\n    if (this.opts.verticalMarginUnit === heightData.unit && this.opts.maxRow === heightData.height) {\\n      return ;\\n    }\\n    this.opts.verticalMarginUnit = heightData.unit;\\n    this.opts.verticalMargin = heightData.height;\\n\\n    if (!noUpdate) {\\n      this._updateStyles();\\n    }\\n  };\\n\\n  /** set/get the current cell height value */\\n  GridStack.prototype.cellHeight = function(val, noUpdate) {\\n    // getter - returns the opts stored height else compute it...\\n    if (val === undefined) {\\n      if (this.opts.cellHeight && this.opts.cellHeight !== 'auto') {\\n        return this.opts.cellHeight;\\n      }\\n      // compute the height taking margin into account (each row has margin other than last one)\\n      var o = this.container.children('.' + this.opts.itemClass).first();\\n      var height = o.attr('data-gs-height');\\n      var verticalMargin = this.opts.verticalMargin;\\n      return Math.round((o.outerHeight() - (height - 1) * verticalMargin) / height);\\n    }\\n\\n    // setter - updates the cellHeight value if they changed\\n    var heightData = Utils.parseHeight(val);\\n    if (this.opts.cellHeightUnit === heightData.unit && this.opts.cellHeight === heightData.height) {\\n      return ;\\n    }\\n    this.opts.cellHeightUnit = heightData.unit;\\n    this.opts.cellHeight = heightData.height;\\n\\n    if (!noUpdate) {\\n      this._updateStyles();\\n    }\\n  };\\n\\n  GridStack.prototype.cellWidth = function() {\\n    // TODO: take margin into account ($horizontal_padding in .scss) to make cellHeight='auto' square ? (see 810-many-columns.html)\\n    return Math.round(this.container.outerWidth() / this.opts.column);\\n  };\\n\\n  GridStack.prototype.getCellFromPixel = function(position, useOffset) {\\n    var containerPos = (useOffset !== undefined && useOffset) ?\\n      this.container.offset() : this.container.position();\\n    var relativeLeft = position.left - containerPos.left;\\n    var relativeTop = position.top - containerPos.top;\\n\\n    var columnWidth = Math.floor(this.container.width() / this.opts.column);\\n    var rowHeight = Math.floor(this.container.height() / parseInt(this.container.attr('data-gs-current-height')));\\n\\n    return {x: Math.floor(relativeLeft / columnWidth), y: Math.floor(relativeTop / rowHeight)};\\n  };\\n\\n  GridStack.prototype.batchUpdate = function() {\\n    this.grid.batchUpdate();\\n  };\\n\\n  GridStack.prototype.commit = function() {\\n    this.grid.commit();\\n    this._triggerRemoveEvent();\\n    this._triggerAddEvent();\\n    this._triggerChangeEvent();\\n  };\\n\\n  GridStack.prototype.isAreaEmpty = function(x, y, width, height) {\\n    return this.grid.isAreaEmpty(x, y, width, height);\\n  };\\n\\n  GridStack.prototype.setStatic = function(staticValue) {\\n    this.opts.staticGrid = (staticValue === true);\\n    this.enableMove(!staticValue);\\n    this.enableResize(!staticValue);\\n    this._setStaticClass();\\n  };\\n\\n  GridStack.prototype._setStaticClass = function() {\\n    var staticClassName = 'grid-stack-static';\\n\\n    if (this.opts.staticGrid === true) {\\n      this.container.addClass(staticClassName);\\n    } else {\\n      this.container.removeClass(staticClassName);\\n    }\\n  };\\n\\n  /** called whenever a node is added or moved - updates the cached layouts */\\n  GridStackEngine.prototype._layoutsNodesChange = function(nodes) {\\n    if (!this._layouts || this._ignoreLayoutsNodeChange) return;\\n    // remove smaller layouts - we will re-generate those on the fly... larger ones need to update\\n    this._layouts.forEach(function(layout, column) {\\n      if (!layout || column === this.column) return;\\n      if (column < this.column) {\\n        this._layouts[column] = undefined;\\n      }\\n      else {\\n        // we save the original x,y,w (h isn't cached) to see what actually changed to propagate better.\\n        // Note: we don't need to check against out of bound scaling/moving as that will be done when using those cache values.\\n        nodes.forEach(function(node) {\\n          var n = layout.find(function(l) { return l._id === node._id });\\n          if (!n) return; // no cache for new nodes. Will use those values.\\n          var ratio = column / this.column;\\n          // Y changed, push down same amount\\n          // TODO: detect doing item 'swaps' will help instead of move (especially in 1 column mode)\\n          if (node.y !== node._origY) {\\n            n.y += (node.y - node._origY);\\n          }\\n          // X changed, scale from new position\\n          if (node.x !== node._origX) {\\n            n.x = Math.round(node.x * ratio);\\n          }\\n          // width changed, scale from new width\\n          if (node.width !== node._origW) {\\n            n.width = Math.round(node.width * ratio);\\n          }\\n          // ...height always carries over from cache\\n        }, this);\\n      }\\n    }, this);\\n\\n    this._saveInitial(); // reset current value now that we diffed.\\n  }\\n\\n  /**\\n   * Called to scale the widget width & position up/down based on the column change.\\n   * Note we store previous layouts (especially original ones) to make it possible to go\\n   * from say 12 -> 1 -> 12 and get back to where we were.\\n   *\\n   * oldColumn: previous number of columns\\n   * column:    new column number\\n   * nodes?:    different sorted list (ex: DOM order) instead of current list\\n   */\\n  GridStackEngine.prototype._updateNodeWidths = function(oldColumn, column, nodes) {\\n    if (!this.nodes.length || oldColumn === column) { return; }\\n\\n    // cache the current layout in case they want to go back (like 12 -> 1 -> 12) as it requires original data\\n    var copy = [this.nodes.length];\\n    this.nodes.forEach(function(n, i) {copy[i] = {x: n.x, y: n.y, width: n.width, _id: n._id}}); // only thing we change is x,y,w and id to find it back\\n    this._layouts = this._layouts || []; // use array to find larger quick\\n    this._layouts[oldColumn] = copy;\\n\\n    // if we're going to 1 column and using DOM order rather than default sorting, then generate that layout\\n    if (column === 1 && nodes && nodes.length) {\\n      var top = 0;\\n      nodes.forEach(function(n) {\\n        n.x = 0;\\n        n.width = 1;\\n        n.y = Math.max(n.y, top);\\n        top = n.y + n.height;\\n      });\\n    } else {\\n      nodes = Utils.sort(this.nodes, -1, oldColumn); // current column reverse sorting so we can insert last to front (limit collision)\\n    }\\n\\n    // see if we have cached previous layout.\\n    var cacheNodes = this._layouts[column] || [];\\n    // if not AND we are going up in size start with the largest layout as down-scaling is more accurate\\n    var lastIndex = this._layouts.length - 1;\\n    if (cacheNodes.length === 0 && column > oldColumn && column < lastIndex) {\\n      cacheNodes = this._layouts[lastIndex] || [];\\n      if (cacheNodes.length) {\\n        // pretend we came from that larger column by assigning those values as starting point\\n        oldColumn = lastIndex;\\n        cacheNodes.forEach(function(cacheNode) {\\n          var j = nodes.findIndex(function(n) {return n && n._id === cacheNode._id});\\n          if (j !== -1) {\\n            // still current, use cache info positions\\n            nodes[j].x = cacheNode.x;\\n            nodes[j].y = cacheNode.y;\\n            nodes[j].width = cacheNode.width;\\n          }\\n        });\\n        cacheNodes = []; // we still don't have new column cached data... will generate from larger one.\\n      }\\n    }\\n\\n    // if we found cache re-use those nodes that are still current\\n    var newNodes = [];\\n    cacheNodes.forEach(function(cacheNode) {\\n      var j = nodes.findIndex(function(n) {return n && n._id === cacheNode._id});\\n      if (j !== -1) {\\n        // still current, use cache info positions\\n        nodes[j].x = cacheNode.x;\\n        nodes[j].y = cacheNode.y;\\n        nodes[j].width = cacheNode.width;\\n        newNodes.push(nodes[j]);\\n        nodes[j] = null; // erase it so we know what's left\\n      }\\n    });\\n    // ...and add any extra non-cached ones\\n    var ratio = column / oldColumn;\\n    nodes.forEach(function(node) {\\n      if (!node) return;\\n      node.x = (column === 1 ? 0 : Math.round(node.x * ratio));\\n      node.width = ((column === 1 || oldColumn === 1) ? 1 : (Math.round(node.width * ratio) || 1));\\n      newNodes.push(node);\\n    });\\n\\n    // finally relayout them in reverse order (to get correct placement)\\n    newNodes = Utils.sort(newNodes, -1, column);\\n    this._ignoreLayoutsNodeChange = true;\\n    this.batchUpdate();\\n    this.nodes = []; // pretend we have no nodes to start with (we use same structures) to simplify layout\\n    newNodes.forEach(function(node) {\\n      this.addNode(node, false); // 'false' for add event trigger\\n      node._dirty = true; // force attr update\\n    }, this);\\n    this.commit();\\n    delete this._ignoreLayoutsNodeChange;\\n\\n    // save this initial layout so we can see what changed and apply changes to other layouts better (diff)\\n    this._saveInitial();\\n  }\\n\\n  /** called to save initial position/size */\\n  GridStackEngine.prototype._saveInitial = function() {\\n    this.nodes.forEach(function(n) {\\n      n._origX = n.x;\\n      n._origY = n.y;\\n      n._origW = n.width;\\n      n._origH = n.height;\\n    });\\n  }\\n\\n  /**\\n   * Modify number of columns in the grid. Will attempt to update existing widgets\\n   * to conform to new number of columns. Requires `gridstack-extra.css` or `gridstack-extra.min.css` for [1-11],\\n   * else you will need to generate correct CSS (see https://github.com/gridstack/gridstack.js#change-grid-columns)\\n   * @param column - Integer > 0 (default 12).\\n   * @param doNotPropagate if true existing widgets will not be updated (optional)\\n   */\\n  GridStack.prototype.setColumn = function(column, doNotPropagate) {\\n    if (this.opts.column === column) { return; }\\n    var oldColumn = this.opts.column;\\n\\n    // if we go into 1 column mode (which happens if we're sized less than minWidth unless disableOneColumnMode is on)\\n    // then remember the original columns so we can restore.\\n    if (column === 1) {\\n      this._prevColumn = oldColumn;\\n    } else {\\n      delete this._prevColumn;\\n    }\\n\\n    this.container.removeClass('grid-stack-' + oldColumn);\\n    this.container.addClass('grid-stack-' + column);\\n    this.opts.column = this.grid.column = column;\\n\\n    if (doNotPropagate === true) { return; }\\n\\n    // update the items now - see if the dom order nodes should be passed instead (else default to current list)\\n    var domNodes;\\n    if (this.opts.oneColumnModeDomSort && column === 1) {\\n      domNodes = [];\\n      this.container.children('.' + this.opts.itemClass).each(function(index, el) {\\n        var node = $(el).data('_gridstack_node');\\n        if (node) { domNodes.push(node); }\\n      });\\n      if (!domNodes.length) { domNodes = undefined; }\\n    }\\n    this.grid._updateNodeWidths(oldColumn, column, domNodes);\\n\\n    // and trigger our event last...\\n    this.grid._ignoreLayoutsNodeChange = true;\\n    this._triggerChangeEvent();\\n    delete this.grid._ignoreLayoutsNodeChange;\\n  };\\n\\n  GridStack.prototype.float = function(val) {\\n    // getter - returns the opts stored mode\\n    if (val === undefined) {\\n      return this.opts.float || false;\\n    }\\n    // setter - updates the mode and relayout if gravity is back on\\n    if (this.opts.float === val) { return; }\\n    this.opts.float = this.grid.float = val || false;\\n    if (!val) {\\n      this.grid._packNodes();\\n      this.grid._notify();\\n    }\\n  };\\n\\n  // legacy method renames\\n  GridStack.prototype.setGridWidth = obsolete(GridStack.prototype.setColumn,\\n    'setGridWidth', 'setColumn', 'v0.5.3');\\n\\n  scope.GridStackUI = GridStack;\\n\\n  scope.GridStackUI.Utils = Utils;\\n  scope.GridStackUI.Engine = GridStackEngine;\\n  scope.GridStackUI.GridStackDragDropPlugin = GridStackDragDropPlugin;\\n\\n  $.fn.gridstack = function(opts) {\\n    return this.each(function() {\\n      var o = $(this);\\n      if (!o.data('gridstack')) {\\n        o\\n          .data('gridstack', new GridStack(this, opts));\\n      }\\n    });\\n  };\\n\\n  return scope.GridStackUI;\\n});\\n\"","require(\"!!/tmp/glpi-9.5.5/glpi/node_modules/script-loader/addScript.js\")(require(\"!!/tmp/glpi-9.5.5/glpi/node_modules/raw-loader/index.js!/tmp/glpi-9.5.5/glpi/node_modules/strip-sourcemap-loader/index.js!/tmp/glpi-9.5.5/glpi/node_modules/gridstack/dist/gridstack.jQueryUI.js\"))","module.exports = \"/** gridstack.js 0.6.3 - JQuery UI Drag&Drop plugin @preserve */\\n/**\\n * https://gridstackjs.com/\\n * (c) 2014-2020 Alain Dumesny, Dylan Weiss, Pavel Reznikov\\n * gridstack.js may be freely distributed under the MIT license.\\n*/\\n(function(factory) {\\n  if (typeof define === 'function' && define.amd) {\\n    define(['jquery', 'gridstack', 'exports'], factory);\\n  } else if (typeof exports !== 'undefined') {\\n    try { jQuery = require('jquery'); } catch (e) {}\\n    try { gridstack = require('gridstack'); } catch (e) {}\\n    factory(jQuery, gridstack.GridStackUI, exports);\\n  } else {\\n    factory(jQuery, GridStackUI, window);\\n  }\\n})(function($, GridStackUI, scope) {\\n  /**\\n  * @class JQueryUIGridStackDragDropPlugin\\n  * jQuery UI implementation of drag'n'drop gridstack plugin.\\n  */\\n  function JQueryUIGridStackDragDropPlugin(grid) {\\n    GridStackUI.GridStackDragDropPlugin.call(this, grid);\\n  }\\n\\n  GridStackUI.GridStackDragDropPlugin.registerPlugin(JQueryUIGridStackDragDropPlugin);\\n\\n  JQueryUIGridStackDragDropPlugin.prototype = Object.create(GridStackUI.GridStackDragDropPlugin.prototype);\\n  JQueryUIGridStackDragDropPlugin.prototype.constructor = JQueryUIGridStackDragDropPlugin;\\n\\n  JQueryUIGridStackDragDropPlugin.prototype.resizable = function(el, opts) {\\n    el = $(el);\\n    if (opts === 'disable' || opts === 'enable') {\\n      el.resizable(opts);\\n    } else if (opts === 'option') {\\n      var key = arguments[2];\\n      var value = arguments[3];\\n      el.resizable(opts, key, value);\\n    } else {\\n      var handles = el.data('gs-resize-handles') ? el.data('gs-resize-handles') :\\n        this.grid.opts.resizable.handles;\\n      el.resizable($.extend({}, this.grid.opts.resizable, {\\n        handles: handles\\n      }, {\\n        start: opts.start || function() {},\\n        stop: opts.stop || function() {},\\n        resize: opts.resize || function() {}\\n      }));\\n    }\\n    return this;\\n  };\\n\\n  JQueryUIGridStackDragDropPlugin.prototype.draggable = function(el, opts) {\\n    el = $(el);\\n    if (opts === 'disable' || opts === 'enable') {\\n      el.draggable(opts);\\n    } else {\\n      el.draggable($.extend({}, this.grid.opts.draggable, {\\n        containment: (this.grid.opts.isNested && !this.grid.opts.dragOut) ?\\n          this.grid.container.parent() :\\n          (this.grid.opts.draggable.containment || null),\\n        start: opts.start || function() {},\\n        stop: opts.stop || function() {},\\n        drag: opts.drag || function() {}\\n      }));\\n    }\\n    return this;\\n  };\\n\\n  JQueryUIGridStackDragDropPlugin.prototype.droppable = function(el, opts) {\\n    el = $(el);\\n    el.droppable(opts);\\n    return this;\\n  };\\n\\n  JQueryUIGridStackDragDropPlugin.prototype.isDroppable = function(el, opts) {\\n    el = $(el);\\n    return Boolean(el.data('droppable'));\\n  };\\n\\n  JQueryUIGridStackDragDropPlugin.prototype.on = function(el, eventName, callback) {\\n    $(el).on(eventName, callback);\\n    return this;\\n  };\\n\\n  scope.JQueryUIGridStackDragDropPlugin = JQueryUIGridStackDragDropPlugin;\\n\\n  return JQueryUIGridStackDragDropPlugin;\\n});\\n\"","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n    console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n    console = window.console\n} else {\n    console = {}\n}\n\nvar functions = [\n    [log, \"log\"],\n    [info, \"info\"],\n    [warn, \"warn\"],\n    [error, \"error\"],\n    [time, \"time\"],\n    [timeEnd, \"timeEnd\"],\n    [trace, \"trace\"],\n    [dir, \"dir\"],\n    [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n    var tuple = functions[i]\n    var f = tuple[0]\n    var name = tuple[1]\n\n    if (!console[name]) {\n        console[name] = f\n    }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n    console.log.apply(console, arguments)\n}\n\nfunction warn() {\n    console.log.apply(console, arguments)\n}\n\nfunction error() {\n    console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n    times[label] = now()\n}\n\nfunction timeEnd(label) {\n    var time = times[label]\n    if (!time) {\n        throw new Error(\"No such label: \" + label)\n    }\n\n    delete times[label]\n    var duration = now() - time\n    console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n    var err = new Error()\n    err.name = \"Trace\"\n    err.message = util.format.apply(null, arguments)\n    console.error(err.stack)\n}\n\nfunction dir(object) {\n    console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n    if (!expression) {\n        var arr = slice.call(arguments, 1)\n        assert.ok(false, util.format.apply(null, arr))\n    }\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}"],"sourceRoot":""}

haha - 2025